Эту заметку cподвигла написать меня задача в результате которой появились новые сертификаты и потребность в их установке.
Можно многими путями решить данную задачу , но у самурая нет цели , есть только путь. И первая часть пути , потребовало нестандартного подхода.
Полностью задача выглядит следующим образом. Есть N количество Linux и Windows серверов в компании. Заканчивается купленный wildcard сертификат вида *.domain.ru. Необходимо перевыпустить, обработать, сохранить безопасно и заменить на всех сервисах в автоматическом режиме.
1. Выпустить, тут особой проблемы нет. Берем любого регистратора, платим деньги, делаем запрос, вносим для проверки владения доменом TXT запись в DNS и получаем письмо содержащие несколько файлов. Сам сертификат certificate.crt , Корневой сертификат root.crt , промежуточный сертификат subсa.crt, запрос сертификата request.csr, и файл приватного ключа private.crt
2. Вторая часть задачи безопасно где-то хранить сертификаты и приватный ключ. Для данной задачи будем использовать vault кластер. К сожалению (или к счастью) сертификаты в полученном виде не сохранишь в сервисе vault. Поэтому данную задачу решаем получением bundle из сертификатов, т.е цепочки и перевод в base64 кодировку , преобразованием в строку.
Выстраивание цепочки сертификатов. Цепочка включает в себя все сертификаты включая корневого центра и промежуточные. Правильная цепочка будет заключатся в следующем. Сертификат сайта → Промежуточный сертификат-→ корневой сертификат.
cat certificate.crt subca.crt root.crt > fullchain.pem
Получаем цепочку. fullchain.pem
Еще один не маловажный вопрос возникает как прикрутить данный сертификат к windows iis веб серверу. Надо сертификат преобразовать в формат pfx.
Выполним следующую команду:
openssl pkcs12 -export -in certificate.crt -inkey private.key -out certificate.pfx
После ввода команды необходимо ввести пароль для создаваемого сертификата.
И еще один вопрос остался. Мы проделали преобразования с сертификатами, подготавливая их для использования. Проверить их можно следующими командами:
openssl rsa -in private.key -check Проерка ключа
openssl x509 -in certificate.crt -text -noout Проверка сертификата
Получаем примерно такой вывод выше.
Или сравнением хешей
openssl req -noout -modulus -in request.csr | openssl md5
openssl x509 -noout -modulus -in fullchain.pem | md5sum
openssl x509 -noout -modulus -in certificate.crt | md5sum
openssl rsa -noout -modulus -in private.key | md5sum
Если все манипуляции проведены верно, то при выполнении команд вы увидите, что хеши одинаковы.
В следующей части , поместим все интересное в Vault.
#DevOPs #OpenSource #SSL