Выпуск и установка сертификата TLS для Nginx с использованием MS CA
Если в организации используется собственный корпоративный удостоверяющий центр, его можно использовать для выпуска сертификата веб-сервера Платформы Радар.
В данном примере рассмотрен выпуск сертификата с использованием Microsoft Certification Authority.
Выпуск сертификата
-
Сначала необходимо создать файл закрытого ключа. Для этого необходимо запустить утилиту openssl и указать имя создаваемого файла, а также используемый алгоритм шифрования:
# openssl genrsa -out pangeo_custom.key -aes256 2048
в результате на экран будет выведено следующее сообщение:
Generating RSA private key, 4096 bit long modulus .....................++ .................................................................................++ e is 65537 (0x10001) Enter pass phrase for pangeo_custom.key: Verifying - Enter pass phrase for pangeo_custom.key:
После появления приглашения
Enter pass phrase for radar_custom.key
следует ввести пароль для файла закрытого ключа (дважды). Пароль необходимо запомнить. -
В текущем каталоге необходимо создать файл
openssl.cnf
и записать в него следующие данные (пример):[ req ] req_extensions = v3_req distinguished_name = req_distinguished_name promt = yes [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = RU stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Moscow localityName = Locality Name (eg, city) localityName_default = Moscow 0.organizationName = Organization Name (eg, company) 0.organizationName_default = Pangeo organizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = ITSec commonName = Common Name (eg, your name or your server\'s hostname) commonName_default = radar-353-aio.test.lab emailAddress = Email Address emailAddress_default = support@pangeoradar.ru [ v3_req ] basicConstraints = critical, CA:true #basicConstraints = CA:false #keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names [ alt_names ] DNS.0 = radar-353-aio.test.lab IP.0 = 192.168.2.147
Значения полей: countryName_default, stateOrProvinceName_default, localityName_default, 0.organizationName_default, organizationalUnitName_default, commonName_default, emailAddress_default, DNS.0, IP.0 необходимо заполнить самостоятельно в соответствии с параметрами инсталляции и инфраструктуры. После внесения изменений файл необходимо сохранить.
-
Необходимо сгенерировать запрос на подпись сертификата, выполнив следующую команду:
# openssl req -new -key radar_custom.key -out cert_request.csr -config openssl.cnf
В процессе выполнения команда запросит ввод пароля, указанного в шаге 1.
-
После создания файла запроса
cert_request.csr
необходимо зайти в веб-интерфейс УЦ MS CA и перейти по ссылке "Request a certificate":
- На следующем этапе необходимо выбрать "advanced certificate request":
- В поле "Saved Request" необходимо скопировать содержимое файла
request.csr
, для поля "Certificate Template" выбрать тип "Web Server". Нажать кнопку "Submit".
- После успешного выпуска необходимо скачать сертификат ("Download certificate") и загрузить файл на сервер, где функционирует служба Nginx.
Установка сертификата
К моменту установки сертификата в наличии должны быть следующие файлы (пример):
pangeo_custom.key
(файл закрытого ключа);pangeo_custom.cer
(файл сертификата).
Далее:
-
Сконвертируйте файл .cer в .crt.
Если сертификат скачивался в формате DER:
openssl x509 -inform DER -in pangeo_custom.cer -out pangeo_custom.crt
Если сертификат скачивался в формате PEM (Base64):
openssl x509 -inform PEM -in pangeo_custom.cer -out pangeo_custom.crt
-
Далее удалите пароль для файла закрытого ключа (команда потребует ввод пароля):
openssl rsa -in pangeo_custom.key -out pangeo_custom_unencrypted.key
-
Затем, файлы
pangeo_custom.crt
иpangeo_custom_unencrypted.key
скопируйте в директорию/opt/pangeoradar/certs/
:# cp pangeo_custom_unencrypted.key /opt/pangeoradar/certs/ # cp pangeo_custom.crt /opt/pangeoradar/certs/ # chmod 644 /opt/pangeoradar/certs/pangeo_custom_unencrypted.key # chmod 644 /opt/pangeoradar/certs/pangeo_custom.crt
-
В разделе Кластер - Управление конфигурацией выбрать Nginx и указать использование нестандартных сертификатов, выполните сохранение и применение настроек:
-
Для подмены сертификата в Keycloak отредактируйте файл шаблона
/opt/pangeoradar/bin/service_config_templates/ui.nginx.tmpl
, раскомментировав вторую секцию конфигурации:server { location /fonts { alias /opt/pangeoradar/bin/dist/fonts; } location / { proxy_pass http://{{.Ui.Ip}}:{{ .Ui.Port }}; }{{ if .DNS.DomainName | IsDomain }} server_name {{ .DNS.UiDomain}};{{ end }} {{ if .DNS.DomainName | IsIp }} listen 443 ssl default_server;{{ else }} listen 443 ssl;{{ end }} ssl on; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_certificate {{ .Nginx.SslCertificate }}; ssl_certificate_key {{ .Nginx.SslCertificateKey }}; } server { location /fonts { alias /opt/pangeoradar/bin/dist/fonts; } location / { proxy_pass http://127.0.0.1:{{ .Ui.Port }}; } listen 8080 ssl default_server; ssl on; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_certificate {{ .Nginx.SslCertificate }}; ssl_certificate_key {{ .Nginx.SslCertificateKey }}; }
-
Перезапустите службу Nginx и проверьте результат:
# systemctl restart nginx
На этом, установка сертификата веб-интерфейса завершена. Для Grafana на порте 6630/TCP сертификат будет заменен автоматически.