В предыдущей статье было рассмотрен пример выпуска SSL сертификата с использованием OpenSSL. Но способ хоть и позволяет выпустить самоподписанный сертификат и использовать его на своем веб-сервере, но он не будет считаться валидным для современных браузеров (Chrome, Edge, Firefox и т.д.).
При каких условиях самоподписанный сертификат станет валидным и подтвержденным?
Для того, чтоб самоподписанный сертификат стал восприниматься валидным и подтвержденным необходимо соблюсти некоторые условия:
- Необходимо установить на клиентскую машину сертификат корневого центра сертификации
- В сертификате должен быть задан Common Name
- В альтернативных именах сертификата должны быть указаны все доменные имена, ip-адреса серверов, на которые планируется установка данного сертификата
- Должны использоваться современные алгоритмы шифрования, например, для подписи sha-256, для симметричного шифрования aes256, для ассиметричного шифрования RSA с длиной ключа не менее 2048 бит. Могут использоваться и другие алгоритмы. Но перечисленная связка на момент написания статьи работает на всех браузерах.
Что нужно для выпуска самоподписанного сертификата?
Для выпуска сертификата у нас должен быть настроенные центр сертификации, который должен подписать запрос на сертификат и в ответ выдать подписанный сертификат от своего имени.
Формирование запроса на сертификат
Для формирование запроса на сертификат для сайта itarticle.ru создаем файл config.txt с следующим содержанием:
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[ dn ]
C=RU
ST=Moscow
L=Moscow
O=My organization
OU=My department
emailAddress=admin@itarticle.ru
CN = itarticle.ru
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = itarticle.ru
DNS.2 = www.itarticle.ru
DNS.3 = 12.123.123.123
С помощью openssl формируем закрытый ключ и запрос на сертификат с использование подготовленного файла config.txt
openssl req -new -newkey rsa -nodes -keyout private.key -out web.txt -config config.txt
В ответ получаем два файла private.key (закрытый ключ) и web.txt (запрос на сертификат). Полученный запрос на сертификат необходимо отправить центру сертификации