Вернуться обратно в Блог
Иногда, для организации работы приложений и сервисов требуется использовать защищенные SSL соединения. Будь то просто сайт, работающий по HTTPS или группа серверов, интегрированных между собой посредством этого протокола.
Именно такая задача вcтала у меня при развертывании одного децентрализованного приложения. Серверов много (более 40). Сертификатов понадобится столько-же. Сначала думал обойтись ,бесплатными, вроде Let's Encrypt, но слижком уж много действий по установке и настройке всей этой обвязки. Да еще и обновлять сертификат нужно раз в 90 дней.
Подумал я и решил, что
- Сервера наружу не смотрят.
- Работают автономно, почти без участия человека.
- По этому не грех и самоподписными обойтись.
Но генерировать на каждый хость по сертификату и добавлять их в доверенные на каждом сервере - ну уж нет! (1600 итераций, божечки-кошечки)
Решено - поднять свой собственный CA и подписывать запросы в нем, попутно автоматизируя этот процесс.
Итак, нам понадобится утилита openssl ...и ПЯТЬ волшебных комманд.
1. Создадим корневой ключ:
openssl genrsa -out rootCA.key 2048
2. Теперь создадим корневой сертификат сроком на 3 года и 1 день
...кто нам запретит =):
openssl req -x509 -new -key rootCA.key -days 1096 -out rootCA.crt
После этого уже можно создавать сертификаты для наших серверов
3. Генерим на сервер ключ:
openssl genrsa -out server.key 2048
4. Создаем запрос на сертификат:
openssl req -new -key server.key -out server.csr
5. Подписываем данный запрос нашим корневым сертификатом:
openssl x509 -req -in server.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out server.crt -days 365
Или если необходим PEM сертификат:
openssl x509 -req -in server.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out server.crt -outform PEM -days 365
В данном примере используется сертификат на 1 год, но этот срок можно увеличить.
Я не рекомендую указывать срок действия сертификата болше чем срок действия корневого сертификата. Неоторый софт и ОС считают подписанный сертификат простроченным, если истек срок действия подписывающего сертификата.
После этих процедур можно раскатать на сервера наш конрневой сертификат, добавив его в доверенные, и после этого, все сертификаты, подписанные нашим CA будут приняты автоматически.
Вот и все. Свой собственный CA готов. Можно раздавать сертификаты.
Posted in Инфраструктура, Полезности on авг 30, 2017.