Регистрация SSL сертификата для веб сервиса на Linux в домене AD
На примере linux сервера MYWEB с nginx на борту.
1. Создаем CSR запрос для центра сертификации в AD. В домене MYDOMAIN - это RDS.MYDOMAIN.DOM .
1.1. Если приватный ключ еще не создан (.key), то команда. Выполняем на MYWEB:
openssl req -new -inform DER -sha1 -newkey rsa:2048 -nodes -keyout myweb.key -out myweb.csr -config openssl.conf
1.2. Если приватный ключ уже есть, то:
openssl req -new -key myweb.key -out myweb.csr -config openssl.conf
где openssl.conf - это наш типовой конфиг
[req] default_bits = 2048 prompt = no default_md = sha256 req_extensions = req_ext distinguished_name = dn [ dn ] C=RU ST=SO L=Moscow O=MyOrg OU=IT emailAddress=it@mydomain.dom CN = myweb.mydomain.dom [ req_ext ] subjectAltName = @alt_names [ alt_names ] DNS.1 = myweb DNS.2 = myweb.mydomain DNS.3 = myweb.mydomain.dom
2. Подписываем запрос в Центре сертификации. Проще выполнять в PS.
Размещаем файл с запросом в папку C:\Temp и указываем в запросе необходимый нам шаблон сертификата, в примере, это WebServer5Years.
Import-Module PSPKISubmit-CertificateRequest -path C:\Temp\myweb.csr -CertificationAuthority (Get-CertificationAuthority rds.mydomain.dom) -Attribute CertificateTemplate:WebServer5Years
где C:\Temp\myweb.csr - наш запрос, rds.mydomain.dom - сервер ЦС, WebServer5Years - название шаблона сертификатов
и выгружаем полученный сертификат
(Get-IssuedRequest -CertificationAuthority (Get-CertificationAuthority rds.mydomain.dom) -RequestID 20) | Receive-Certificate -Path C:\Temp -Force
где -RequestID 20 - номер запроса, его видно в консоли сервера ЦС (запуск PKIView.msc), C:\Temp - папка для выгрузки
3. Переименовываем полученный сертификат в myweb.crt, т.к. он выгружается в формате .cer . Копируем его на веб сервер.
3.1. Для некоторых серверов необходимо создать цепочку сертификатов, тогда необходимо создать такой файл (это нужно не для всех):
cat myweb.crt ca.crt > apweb-bundle.crt*
где apweb.crt - сертификат веб сервера, ca.crt - сертификат CA
4. Подключаем файлы .key и .crt в конфиг веб сервера (в нашем случае NGINX).
ssl_certificate /var/www/cert/myweb.crt; ssl_certificate_key /var/www/cert/myweb.key;
sudo systemctl restart nginx.service