Если вы не можете купить или получить сертификат https, вы можете сгенерировать его сами. Сертификат должен быть в формате PEM (ASCII BASE64), а сам файл должен содержать только публичный ключ (полностью, включая строки BEGIN
и END
).
После того, как вы создали сертификат, вам нужно будет загрузить его на сервера Telegram — для этого передайте его в поле certificate метода setWebhook. Это действие обязательно только для самозаверенных сертификатов. Приобретённые за деньги или полученные через certbot сертификаты никуда отправлять не нужно.
Исполняемые файлы OpenSSL для Windows доступны в сети.
Исходные коды доступны на GitHub и на официальном сайте.
openssl req -newkey rsa:2048 -sha256 -nodes -x509 -days 365 \
-keyout YOURPRIVATE.key \
-out YOURPUBLIC.pem \
-subj "/C=RU/ST=Saint-Petersburg/L=Saint-Petersburg/O=Example Inc/CN=domain.EXAMPLE"
Необходимо использовать YOURPUBLIC.pem
в качестве публичного ключа при настройки вебхука.
openssl x509 -text -noout -in YOURPUBLIC.pem
openssl x509 -inform der -in YOURDER.der -out YOURPEM.pem
openssl pkcs12 -in YOURPKCS.p12 -out YOURPEM.pem
С подробной документацией можно ознакомиться на сайте документации Oracle.
keytool -genkey -keyalg RSA \
-alias YOURDOMAIN.EXAMPLE \
-keystore YOURJKS.jks \
-storepass YOURPASSWORD \
-validity 360 \
-keysize 2048
Промежуточный этап перед конвертацией в PEM:
keytool -importkeystore \
-srckeystore YOURJKS.jks \
-destkeystore YOURPKCS.p12 \
-srcstoretype jks \
-deststoretype pkcs12
Для этой операции необходим OpenSSL:
openssl pkcs12 -in YOURPKCS.p12 -out YOURPEM.pem
Создание самозаверенного сертификата доступно и стандартными средствами Windows, несмотря на то, что исполняемые файлы OpenSSL для Windows доступны для скачивания.
Для настройки вебхука нужен только публичный ключ.
Создайте файл TEMPLATE.txt с таким содержанием:
[NewRequest]
; В этом разделе должно быть хотя бы одно значение:
Subject = "CN=DOMAIN.EXAMPLE"
KeyLength = 2048
KeyAlgorithm = RSA
HashAlgorithm = sha256
; MachineKeySet = true
RequestType = Cert
UseExistingKeySet=false ; Генерирует новый приватный ключ для экспорта
Exportable = true ; Делает возможным экспорт приватного ключа в PFX
Далее выполните в командной строке:
certreq -new TEMPLATE.txt RequestFileOut
После этого будет создан и установлен самозаверенный сертификат. Для просмотра выполните:
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
С подробной документацией можно ознакомиться на сайте документации Microsoft.
Конвертировать YOURPKCS.pfx в PEM (который включает в себя приватный ключ) лучше делать с помощью OpenSSL:
openssl pkcs12 -in YOURPKCS.pfx -out YOURPEM.cer
В качестве графического интерфейса для экспорта публичной части сертификата в PEM можно использовать certmgr.msc.