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

    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
    Ответ написан
    Комментировать