Перейти к содержанию

Выпуск и установка сертификата TLS для Nginx с использованием MS CA

Если в организации используется собственный корпоративный удостоверяющий центр, его можно использовать для выпуска сертификата веб-сервера Платформы Радар.

В данном примере рассмотрен выпуск сертификата с использованием Microsoft Certification Authority.

Выпуск сертификата

  1. Сначала необходимо создать файл закрытого ключа. Для этого необходимо запустить утилиту 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 следует ввести пароль для файла закрытого ключа (дважды). Пароль необходимо запомнить.

  2. В текущем каталоге необходимо создать файл 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 необходимо заполнить самостоятельно в соответствии с параметрами инсталляции и инфраструктуры. После внесения изменений файл необходимо сохранить.

  3. Необходимо сгенерировать запрос на подпись сертификата, выполнив следующую команду:

    # openssl req -new -key radar_custom.key -out cert_request.csr -config openssl.cnf
    

    В процессе выполнения команда запросит ввод пароля, указанного в шаге 1.

  4. После создания файла запроса cert_request.csr необходимо зайти в веб-интерфейс УЦ MS CA и перейти по ссылке "Request a certificate":

  1. На следующем этапе необходимо выбрать "advanced certificate request":

  1. В поле "Saved Request" необходимо скопировать содержимое файла request.csr, для поля "Certificate Template" выбрать тип "Web Server". Нажать кнопку "Submit".

  1. После успешного выпуска необходимо скачать сертификат ("Download certificate") и загрузить файл на сервер, где функционирует служба Nginx.

Установка сертификата

К моменту установки сертификата в наличии должны быть следующие файлы (пример):

  • pangeo_custom.key (файл закрытого ключа);
  • pangeo_custom.cer (файл сертификата).

Далее:

  1. Сконвертируйте файл .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
    
  2. Далее удалите пароль для файла закрытого ключа (команда потребует ввод пароля):

    openssl rsa -in pangeo_custom.key -out pangeo_custom_unencrypted.key
    
  3. Затем, файлы 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
    
  4. В разделе Кластер - Управление конфигурацией выбрать Nginx и указать использование нестандартных сертификатов, выполните сохранение и применение настроек:

  1. Для подмены сертификата в 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 }};
    }
    
  2. Перезапустите службу Nginx и проверьте результат:

    # systemctl restart nginx
    

На этом, установка сертификата веб-интерфейса завершена. Для Grafana на порте 6630/TCP сертификат будет заменен автоматически.