Поделиться через


Создание самозаверяющего сертификата Шлюза приложений Azure с помощью пользовательского корневого ЦС

SKU шлюза приложений версии 2 представляет использование доверенных корневых сертификатов для обеспечения подключения по протоколу TLS с серверами back-end. Это положение отменяет использование сертификатов проверки подлинности (индивидуальных сертификатов Leaf), необходимых для SKU версии 1. Корневой сертификат — это сертификат в кодировке Base-64 X.509(.CER) в формате корневого сертификата с серверной стороны сертификатов. Он определяет корневой центр сертификации ( ЦС), выдавший сертификат сервера, а затем сертификат сервера используется для связи TLS/SSL.

Шлюз приложений доверяет сертификату веб-сайта по умолчанию, если он подписан известным ЦС (например, GoDaddy или DigiCert). В этом случае не нужно явно отправлять корневой сертификат. Дополнительные сведения см. в разделе «Обзор терминации TLS и от конца до конца TLS с помощью Application Gateway». Однако, если у вас есть среда разработки и тестирования и вы не хотите приобретать сертификат, подписанный проверенным центром сертификации (ЦС), можно создать собственный пользовательский корневой центр сертификации (ЦС) и конечный сертификат, подписанный этим корневым ЦС.

Примечание.

Самогенерированные сертификаты по умолчанию не являются доверенными и могут быть трудно поддерживать. Кроме того, они могут использовать устаревшие хэши и наборы шифров, которые могут не быть сильными. Для повышения безопасности приобретите сертификат, подписанный известным центром сертификации.

Для создания частного сертификата для внутренних подключений TLS можно использовать следующие параметры.

  1. Используйте средство генератора частных сертификатов с помощью одного щелчка мыши. Используя предоставленное доменное имя (общее имя), это средство выполняет те же действия, что и описано в этой статье для создания сертификатов root и server. С помощью созданных файлов сертификатов можно немедленно загрузить корневой сертификат (.CER) в настройки серверной части шлюза и соответствующую цепочку сертификатов (.PFX) на внутренний сервер. Пароль для PFX-файла также предоставляется в скачанном ZIP-файле.

  2. Используйте команды OpenSSL для настройки и создания сертификатов в соответствии с вашими потребностями. Продолжайте следовать инструкциям в этой статье, если вы хотите сделать это полностью самостоятельно.

В этой статье раскрываются следующие темы:

  • Создание собственного центра сертификации
  • Создайте самоподписанный сертификат, подписанный вашим пользовательским центром сертификации
  • Отправка самозаверяющего корневого сертификата в шлюз приложений для проверки подлинности серверного сервера

Предпосылки

  • OpenSSL на компьютере под управлением Windows или Linux

    Хотя для управления сертификатами могут быть доступны другие средства, в этом руководстве используется OpenSSL. OpenSSL можно найти в комплекте с множеством дистрибутивов Linux, таких как Ubuntu.

  • Веб-сервер

    Например, Apache, IIS или NGINX для проверки сертификатов.

  • Номер SKU шлюза приложений версии 2

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

Создание сертификата корневого УЦ

Создайте корневой сертификат ЦС с помощью OpenSSL.

Создание корневого ключа

  1. Войдите на компьютер, где установлен OpenSSL и выполните следующую команду. При этом создается зашифрованный ключ.

    openssl ecparam -out contoso.key -name prime256v1 -genkey
    

Создайте корневой сертификат и самозаверяйте его.

  1. Используйте следующую команду, чтобы создать запрос на подпись сертификата (CSR).

    openssl req -new -sha256 -key contoso.key -out contoso.csr
    
  2. При появлении запроса введите пароль для корневого ключа и сведения об организации для пользовательского центра сертификации (ЦС), например, страна/регион, штат, организация, подразделение и полное доменное имя (это домен издателя).

    создание корневого сертификата

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

    openssl x509 -req -sha256 -days 365 -in contoso.csr -signkey contoso.key -out contoso.crt
    

    Предыдущие команды создают корневой сертификат. Вы будете использовать это для подписывания сертификата сервера.

Создание сертификата сервера

Затем вы создадите сертификат сервера с помощью OpenSSL.

Создание ключа сертификата

Используйте следующую команду, чтобы создать ключ для сертификата сервера.

openssl ecparam -out fabrikam.key -name prime256v1 -genkey

Создайте запрос на подписание сертификата (CSR)

CSR — это открытый ключ, который предоставляется ЦС при запросе сертификата. ЦС выдает сертификат для этого конкретного запроса.

Примечание.

CN (общее имя) для сертификата сервера должен отличаться от домена издателя. Например, в этом случае cn для издателя является www.contoso.com , а CN сертификата сервера — www.fabrikam.comэто .

  1. Чтобы создать CSR, используйте следующую команду:

    openssl req -new -sha256 -key fabrikam.key -out fabrikam.csr
    
  2. При появлении запроса введите пароль для корневого ключа и сведения об организации для настраиваемого Центра сертификации: страна или регион, штат, организация, учетная единица и полное доменное имя. Это домен веб-сайта, который должен отличаться от издателя.

    Сертификат сервера

Создайте сертификат с помощью CSR и ключа и подпишите его с помощью корневого ключа ЦС.

  1. Чтобы создать сертификат, используйте следующую команду:

    openssl x509 -req -in fabrikam.csr -CA  contoso.crt -CAkey contoso.key -CAcreateserial -out fabrikam.crt -days 365 -sha256
    

Проверка только что созданного сертификата

  1. Используйте следующую команду, чтобы распечатать выходные данные файла CRT и проверить его содержимое:

    openssl x509 -in fabrikam.crt -text -noout
    

    Проверка сертификата

  2. Проверьте файлы в каталоге и убедитесь, что у вас есть следующие файлы:

    • contoso.crt
    • contoso.key
    • fabrikam.crt
    • fabrikam.key

Настройка сертификата в параметрах TLS веб-сервера

На веб-сервере настройте TLS с помощью файлов fabrikam.crt и fabrikam.key. Если веб-сервер не может принимать два файла, их можно объединить в один PEM-файл или PFX-файл с помощью команд OpenSSL.

СЛУЖБЫ IIS

Инструкции по импорту сертификатов и отправке их в качестве сертификата сервера в IIS см. в статье "Практическое руководство. Установка импортированных сертификатов на веб-сервере в Windows Server 2003".

Инструкции по привязке TLS см. в разделе "Настройка SSL" в IIS 7.

Апачи

Следующая конфигурация является примером виртуального узла, настроенного для SSL в Apache:

<VirtualHost www.fabrikam:443>
      DocumentRoot /var/www/fabrikam
      ServerName www.fabrikam.com
      SSLEngine on
      SSLCertificateFile /home/user/fabrikam.crt
      SSLCertificateKeyFile /home/user/fabrikam.key
</VirtualHost>

NGINX

Следующая конфигурация является примером блока сервера NGINX с конфигурацией TLS:

NGINX с TLS

Доступ к серверу для проверки конфигурации

  1. Добавьте корневой сертификат в доверенное корневое хранилище компьютера. При доступе к веб-сайту убедитесь, что в браузере отображается вся цепочка сертификатов.

    Доверенные корневые сертификаты

    Примечание.

    Предполагается, что DNS настроен для указания имени веб-сервера (в этом примере) www.fabrikam.comна IP-адрес веб-сервера. В противном случае можно изменить файл hosts для разрешения имени.

  2. Перейдите на веб-сайт и щелкните значок блокировки в адресном поле браузера, чтобы проверить сведения о сайте и сертификате.

Проверка конфигурации с помощью OpenSSL

Кроме того, для проверки сертификата можно использовать OpenSSL.

openssl s_client -connect localhost:443 -servername www.fabrikam.com -showcerts

Проверка сертификата OpenSSL

Отправка корневого сертификата в параметры HTTP шлюза приложений

Чтобы загрузить сертификат в Application Gateway, необходимо экспортировать сертификат .crt в формате .cer с кодировкой Base-64. Так как CRT уже содержит открытый ключ в формате в кодировке Base-64, просто переименуйте расширение файла из CRT в .cer.

Портал Azure

Чтобы отправить доверенный корневой сертификат на портале, выберите параметры серверной части и выберите HTTPS в протоколе серверной части.

Снимок экрана: добавление сертификата с помощью портала.

Azure PowerShell

Кроме того, вы можете использовать Azure CLI или Azure PowerShell для отправки корневого сертификата. Следующий код — это пример Azure PowerShell.

Примечание.

В следующем примере в шлюз приложений добавляется доверенный корневой сертификат, создается новый параметр HTTP и добавляется новое правило, если внутренний пул и прослушиватель уже существуют.

## Add the trusted root certificate to the Application Gateway

$gw=Get-AzApplicationGateway -Name appgwv2 -ResourceGroupName rgOne

Add-AzApplicationGatewayTrustedRootCertificate `
   -ApplicationGateway $gw `
   -Name CustomCARoot `
   -CertificateFile "C:\Users\surmb\Downloads\contoso.cer"

$trustedroot = Get-AzApplicationGatewayTrustedRootCertificate `
   -Name CustomCARoot `
   -ApplicationGateway $gw

## Get the listener, backend pool and probe

$listener = Get-AzApplicationGatewayHttpListener `
   -Name basichttps `
   -ApplicationGateway $gw

$bepool = Get-AzApplicationGatewayBackendAddressPool `
  -Name testbackendpool `
  -ApplicationGateway $gw

Add-AzApplicationGatewayProbeConfig `
  -ApplicationGateway $gw `
  -Name testprobe `
  -Protocol Https `
  -HostName "www.fabrikam.com" `
  -Path "/" `
  -Interval 15 `
  -Timeout 20 `
  -UnhealthyThreshold 3

$probe = Get-AzApplicationGatewayProbeConfig `
  -Name testprobe `
  -ApplicationGateway $gw

## Add the configuration to the HTTP Setting and don't forget to set the "hostname" field
## to the domain name of the server certificate as this will be set as the SNI header and
## will be used to verify the backend server's certificate. Note that TLS handshake will
## fail otherwise and might lead to backend servers being deemed as Unhealthy by the probes

Add-AzApplicationGatewayBackendHttpSettings `
  -ApplicationGateway $gw `
  -Name testbackend `
  -Port 443 `
  -Protocol Https `
  -Probe $probe `
  -TrustedRootCertificate $trustedroot `
  -CookieBasedAffinity Disabled `
  -RequestTimeout 20 `
  -HostName www.fabrikam.com

## Get the configuration and update the Application Gateway

$backendhttp = Get-AzApplicationGatewayBackendHttpSettings `
  -Name testbackend `
  -ApplicationGateway $gw

Add-AzApplicationGatewayRequestRoutingRule `
  -ApplicationGateway $gw `
  -Name testrule `
  -RuleType Basic `
  -BackendHttpSettings $backendhttp `
  -HttpListener $listener `
  -BackendAddressPool $bepool

Set-AzApplicationGateway -ApplicationGateway $gw

Проверка работоспособности серверной части шлюза приложений

  1. Щелкните на Работоспособность сервера вашего шлюза приложений, чтобы проверить состояние теста.
  2. Вы увидите, что состояние работоспособно для пробы HTTPS.

Проба HTTPS

Дальнейшие действия

Чтобы узнать больше о SSL\TLS в шлюзе приложений, см. раздел Обзор завершения TLS и полной маршрутизации TLS с помощью шлюза приложений.