Администрирование
December 27, 2024

Регистрация 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.

Понадобится модуль PSPKI

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;

5. Перезагружаем веб сервер

sudo systemctl restart nginx.service