Задать вопрос

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}}


Не пойму, что не так-то?
  • Вопрос задан
  • 5939 просмотров
Подписаться 4 Простой Комментировать
Решения вопроса 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
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
NeiroNx
@NeiroNx
Программист
Все правильно - самоподписные сертификаты невозможно проверить на подлинность - следовательно они не работают в данном контексте.
Ответ написан
@BOBrentS
ТАКой же заТЫК, но сделано всё с Apache наВИНДе...
..ПоМОЖЕТе сориентироваться!?

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

P.S. конвертация:
openssl x509 -in YOURPUBLIC.crt -out YOURPUBLIC.pem -outform PEM
даёт идентичное содержимое с другим разширением файла на конце =Ъ
ЗаРАНее спаси60
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы