Содержание

Использование самозаверенных сертификатов

Вам необходимо загрузить полученный сертификат на сервера Telegram. Для этого нужно передать файл с публичным сертификатом в поле certificate метода setWebhook. Сертификат должен быть в формате PEM (ASCII BASE64), а сам файл должен полностью содержать только публичный ключ (включая строки BEGIN и END).

Генерация пары сертификатов

Openssl

Исполняемые файлы Openssl для Windows доступны в сети.
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=YOURDOMAIN.EXAMPLE"

Необходимо использовать YOURPUBLIC.pem в качестве публичного ключа при настройки вебхука.

Проверить сертификат можно командой:

openssl x509 -text -noout -in YOURPUBLIC.pem

Конвертация из уже сгенерированного DER:

openssl x509 -inform der -in YOURDER.der -out YOURPEM.pem

Конвертация из уже сгенерированного PKCS12:

openssl pkcs12 -in YOURPKCS.p12 -out YOURPEM.pem
Подробнее: https://openssl.org

Java keystore

Генерация самозаверенного JKS:

keytool -genkey -keyalg RSA -alias YOURDOMAIN.EXAMPLE -keystore YOURJKS.jks -storepass YOURPASSWORD -validity 360 -keysize 2048

Конвертация JKS в PKCS12 (промежуточный этап перед конвертацией в PEM):

keytool -importkeystore -srckeystore YOURJKS.jks -destkeystore YOURPKCS.p12 -srcstoretype jks -deststoretype pkcs12

Конвертация PKCS12 в PEM (необходим openssl):

openssl pkcs12 -in YOURPKCS.p12 -out YOURPEM.pem
Подробнее: https://docs.oracle.com

Windows

Создание самозаверенного сертификата доступно и стандартными средствами Windows, несмотря на то, что исполняемые файлы OpenSSL для Windows доступны для скачивания.

В командной строке:

certreq -new TEMPLATE.txt RequestFileOut

Пример файла TEMPLATE.txt:

[NewRequest]
    ; В этом разделе должно быть хотя бы одно значение:
    Subject = "CN=DOMAIN.EXAMPLE"
    KeyLength = 2048
    KeyAlgorithm = RSA
    HashAlgorithm = sha256
    ; MachineKeySet = true
    RequestType = Cert
    UseExistingKeySet=false ; Генерирует новый приватный ключ для экспорта
    Exportable = true ; Делает возможным экспорт приватного ключа в PFX

После этого будет создан и установлен самозаверенный сертификат. Для просмотра:

certutil -store -user my

Экспортируем в DER (промежуточный этап перед конвертацией в PEM):

certutil -user -store -split my SERIALNUMBER YOURDER.crt

Конвертация в PEM (используется для настройки вебхука):

certutil -encode YOURDER.crt YOURPEM.cer

Удаление сертификата из хранилища:

certutil -delstore -user my SERIALNUMBER

Экспорт в формат PFX(PKCS12):

certutil -exportpfx -user YOURDOMAIN.EXAMPLE YOURPKCS.pfx NoChain
Подробнее: https://technet.microsoft.com

Конвертировать YOURPKCS.pfx в PEM, включая приватный ключ, лучше делать с помощью OpenSSL:

openssl pkcs12 -in YOURPKCS.pfx -out YOURPEM.cer

Обратите внимание: для настройки вебхука нужен только публичный ключ сертификата. certmgr.msc может быть использован в качестве графического интерфейса для экспорта публичной части самозаверенного сертификата в PEM.

Комментарии