theblackpost
@theblackpost

Telegram самоподписной сертификат для IP?

Домена нет. Только IP.
Создаю сертификат:

openssl req -newkey rsa:2048 -sha256 -nodes -keyout YOURPRIVATE.key -x509 -days 365 -out YOURPUBLIC.pem -subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=IP_МОЕГО_СЕРВЕРА"


Generating a RSA private key
.........................+++++
...........+++++
writing new private key to 'YOURPRIVATE.key'


Отправляю в телеграм:

curl -F "url=https://IP_МОЕГО_СЕРВЕРА/tg/index.php" -F "certificate=@YOURPUBLIC.pem" "https://api.telegram.org/МОЙ_ТОКЕН/setwebhook"


Получаю:
{"ok":true,"result":true,"description":"Webhook was set"}#


Далее проверяю в браузере:
https://api.telegram.org/МОЙ_ТОКЕН/getWebhookInfo

Получаю:
{"ok":true,"result":{"url":"https://IP_МОЕГО_СЕРВЕРА/tg/index.php","has_custom_certificate":true,"pending_update_count":21,"last_error_date":1575977768,"last_error_message":"SSL error {error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed}","max_connections":40}}


Не пойму, что не так-то?
  • Вопрос задан
  • 645 просмотров
Решения вопроса 1
theblackpost
@theblackpost Автор вопроса
В общем, решил.
Итак, мб кому-то пригодится нормальная инструкция для IP:

openssl req -newkey rsa:2048 -sha256 -nodes -x509 -days 365 \
-keyout YOURPRIVATE.key \
-out YOURPUBLIC.crt \
-subj "/C=RU/ST=Saint-Petersburg/L=Saint-Petersburg/O=Example Inc/CN=IP_СЕРВЕРА"


Дальше, конвертим в .pem :

openssl x509 -in YOURPUBLIC.crt -out YOURPUBLIC.pem -outform PEM


Копируем файлы в папку с другими ключами: (можно не копировать,, но указать свой путь в конфиге Apache)
cp YOURPUBLIC.crt /etc/ssl/certs/YOURPUBLIC.crt
cp YOURPRIVATE.key /etc/ssl/private/YOURPRIVATE.key


В настройки (для apache) /etc/apache2/sites-available/default-ssl.conf :

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin your_email@example.com
ServerName IP сервера
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile      /etc/ssl/certs/YOURPUBLIC.crt
SSLCertificateKeyFile /etc/ssl/private/YOURPRIVATE.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>
</IfModule>


Создать новый сниппет Apache в каталоге etc/apache2/conf-available.

Рекомендуется указать в названии файла его назначение (к примеру, ssl-params.conf):

sudo nano /etc/apache2/conf-available/ssl-params.conf


# from https://cipherli.st/
# and https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.html
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLSessionTickets Off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"


Настроечки для Apache:

sudo a2enmod ssl
sudo a2enmod headers
sudo a2ensite default-ssl


Проверяем,
sudo apache2ctl configtest
если ок, то будет что-то типо:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK


Ребутаем.
service apache2 restart

Если ок, то открываем c https в браузере.

Ну а дальше скармливаем сертификат ОБЯЗАТЕЛЬНО! с @ телеграм боту

curl -F "url=https://IP_МОЕГО_СЕРВЕРА/tg/index.php" -F "certificate=@YOURPUBLIC.pem" "https://api.telegram.org/МОЙ_ТОКЕН/setwebhook"


Проверяем:

https://api.telegram.org/МОЙ_ТОКЕН/getWebhookInfo
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Все правильно - самоподписные сертификаты невозможно проверить на подлинность - следовательно они не работают в данном контексте.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SAYMON Санкт-Петербург
от 100 000 до 200 000 руб.
Sportmaster Lab Москва
от 150 000 до 350 000 руб.
29 янв. 2020, в 07:06
1000 руб./за проект
29 янв. 2020, в 06:14
1000 руб./за проект
29 янв. 2020, в 01:16
500 руб./за проект