Самоподписанные SSL-сертификаты
Назначение документа
Документ описывает процедуру создания самоподписанных сертификатов с помощью OpenSSL.
1. Создание CA (корневой сертификат)
CA – это корневой сертификат, по сути третья сторона, которой при шифровании данных доверяют клиент и сервер. На его основе будут выпускаться все остальные сертификаты. Для каждого нового домена верхнего уровня необходимо будет выпускать свой сертификат.
Чтобы сгенерировать любой x509 сертификат, необходима пара ключей, открытый и закрытый. В рассматриваемом примере будем использовать RSA ключ.
-
Создаем ключ:
В каталоге появится файл ca-key.pem. Это – приватный ключ, он же закрытый ключ.
-
Генерируем сам CA-сертификат:
В процессе генерации будут заданы вопросы, ответить на которые можно, например, так:
На выходе будет получен файл ca.pem. Это – наш корневой CA, которым мы будем подписывать конечные сертификаты.
2. Генерация конечных сертификатов
-
Создаем ключ для конечного сертификата:
-
Создаем файл tls.cnf следующего вида:
В этом файле указываем интересующие нас домены, ip-адреса и информацию о сертификате.[req] distinguished_name = req_distinguished_name req_extensions = req_ext prompt = no [req_distinguished_name] C = RU ST = Moscow L = Moscow O = MailRU LLC OU = DevOps CN = www.domain.tld [req_ext] keyUsage = keyEncipherment, dataEncipherment, digitalSignature extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1 = www.domain.tld DNS.2 = cloud.domain.tld DNS.3 = '*.cloud.domain.tld' IP.1 = 127.0.0.1 IP.2 = 192.168.1.4
-
Генерируем запрос на сертификат:
В результате появится файл cert.csr, который можно проверить: -
Генерируем сам сертификат:
-
Проверяем что в сертификате есть все необходимые данные:
Должена быть выведена следующая информация:- Issuer - данные с CA.
- Subject - данные из конфига tls.cnf.
- DNS собственно - alternative names.
3. Итоговый результат
После выполнения описанных выше действий должны получить следующий набор файлов:
- ca.pem - ставим на клиентские машины, в систему, в браузер.
- cakey.pem - храним в секрете.
- cert.pem и cert-key.pem - должны находиться на ресурсе, который хотим перевести на HTTPS.