В общем, решил.
Итак, мб кому-то пригодится нормальная инструкция для 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