Generowanie certyfikatu z podpisem własnym usługi Azure Application Gateway przy użyciu niestandardowego głównego urzędu certyfikacji
Jednostka SKU usługi Application Gateway w wersji 2 wprowadza użycie zaufanych certyfikatów głównych do zezwalania na połączenia TLS z serwerami zaplecza. Ta aprowizacja powoduje usunięcie użycia certyfikatów uwierzytelniania (pojedynczych certyfikatów liścia), które były wymagane w jednostce SKU w wersji 1. Certyfikat główny jest szyfrowany algorytmem Base-64 X.509(. Certyfikat główny CER) formatuj z serwera certyfikatów zaplecza. Identyfikuje główny urząd certyfikacji, który wystawił certyfikat serwera, a certyfikat serwera jest następnie używany do komunikacji TLS/SSL.
Usługa Application Gateway ufa certyfikatowi witryny internetowej domyślnie, jeśli jest podpisany przez dobrze znany urząd certyfikacji (na przykład GoDaddy lub DigiCert). Nie musisz jawnie przekazywać certyfikatu głównego w tym przypadku. Aby uzyskać więcej informacji, zobacz Overview of TLS termination and end to end TLS with Application Gateway (Omówienie kończenia żądań protokołu TLS i kompleksowego szyfrowania TLS w usłudze Application Gateway). Jeśli jednak masz środowisko deweloperskie/testowe i nie chcesz kupować zweryfikowanego certyfikatu podpisanego przez urząd certyfikacji, możesz utworzyć własny niestandardowy główny urząd certyfikacji i certyfikat liścia podpisany przez ten główny urząd certyfikacji.
Uwaga
Certyfikaty generowane samodzielnie nie są domyślnie zaufane i mogą być trudne do utrzymania. Ponadto mogą używać nieaktualnych zestawów skrótów i szyfrów, które mogą nie być silne. Aby uzyskać lepsze zabezpieczenia, kup certyfikat podpisany przez dobrze znany urząd certyfikacji.
Poniższe opcje umożliwiają wygenerowanie certyfikatu prywatnego dla połączeń TLS zaplecza.
Użyj narzędzia generatora certyfikatów prywatnych jednym kliknięciem. Przy użyciu podanej nazwy domeny (nazwa pospolita) to narzędzie wykonuje te same kroki, co opisane w tym artykule w celu wygenerowania certyfikatów głównych i serwerów. Za pomocą wygenerowanych plików certyfikatów można natychmiast przekazać certyfikat główny (. Plik CER) do ustawienia zaplecza bramy i odpowiedniego łańcucha certyfikatów (. PLIK PFX) do serwera zaplecza. Hasło do pliku PFX jest również podane w pobranym pliku ZIP.
Użyj poleceń OpenSSL, aby dostosować i wygenerować certyfikaty zgodnie z potrzebami. Kontynuuj wykonywanie instrukcji opisanych w tym artykule, jeśli chcesz to zrobić samodzielnie.
Z tego artykułu dowiesz się, jak wykonywać następujące działania:
- Tworzenie własnego niestandardowego urzędu certyfikacji
- Tworzenie certyfikatu z podpisem własnym podpisanego przez niestandardowy urząd certyfikacji
- Przekazywanie certyfikatu głównego z podpisem własnym do usługi Application Gateway w celu uwierzytelnienia serwera zaplecza
Wymagania wstępne
Program OpenSSL na komputerze z systemem Windows lub Linux
Chociaż w tym samouczku mogą być dostępne inne narzędzia do zarządzania certyfikatami, w tym samouczku jest używana biblioteka OpenSSL. Pakiet OpenSSL można znaleźć w wielu dystrybucjach systemu Linux, takich jak Ubuntu.
Serwer internetowy
Na przykład Apache, IIS lub NGINX do testowania certyfikatów.
Jednostka SKU usługi Application Gateway w wersji 2
Jeśli nie masz istniejącej bramy aplikacji, zobacz Szybki start: bezpośredni ruch internetowy za pomocą usługi aplikacja systemu Azure Gateway — Azure Portal.
Tworzenie certyfikatu głównego urzędu certyfikacji
Utwórz certyfikat głównego urzędu certyfikacji przy użyciu protokołu OpenSSL.
Tworzenie klucza głównego
Zaloguj się na komputerze, na którym jest zainstalowany program OpenSSL, i uruchom następujące polecenie. Spowoduje to utworzenie zaszyfrowanego klucza.
openssl ecparam -out contoso.key -name prime256v1 -genkey
Tworzenie certyfikatu głównego i samodzielne podpisywanie go
Użyj następującego polecenia, aby wygenerować żądanie podpisania certyfikatu (CSR).
openssl req -new -sha256 -key contoso.key -out contoso.csr
Po wyświetleniu monitu wpisz hasło klucza głównego oraz informacje organizacyjne dla niestandardowego urzędu certyfikacji, takie jak Kraj/Region, State, Org, OU i w pełni kwalifikowana nazwa domeny (jest to domena wystawcy).
Użyj następującego polecenia, aby wygenerować certyfikat główny.
openssl x509 -req -sha256 -days 365 -in contoso.csr -signkey contoso.key -out contoso.crt
Poprzednie polecenia tworzą certyfikat główny. Użyjesz go do podpisania certyfikatu serwera.
Tworzenie certyfikatu serwera
Następnie utworzysz certyfikat serwera przy użyciu protokołu OpenSSL.
Tworzenie klucza certyfikatu
Użyj następującego polecenia, aby wygenerować klucz certyfikatu serwera.
openssl ecparam -out fabrikam.key -name prime256v1 -genkey
Tworzenie żądania CSR (żądanie podpisania certyfikatu)
Żądanie CSR jest kluczem publicznym, który jest podawany urządowi certyfikacji podczas żądania certyfikatu. Urząd certyfikacji wystawia certyfikat dla tego konkretnego żądania.
Uwaga
Nazwa pospolita certyfikatu serwera musi być inna niż domena wystawcy. Na przykład w tym przypadku cn dla wystawcy jest www.contoso.com
i certyfikat serwera CN to www.fabrikam.com
.
Użyj następującego polecenia, aby wygenerować csr:
openssl req -new -sha256 -key fabrikam.key -out fabrikam.csr
Po wyświetleniu monitu wpisz hasło dla klucza głównego oraz informacje organizacyjne dla niestandardowego urzędu certyfikacji: Kraj/Region, Stan, Organizacja, Jednostka organizacyjna i w pełni kwalifikowana nazwa domeny. Jest to domena witryny internetowej i powinna być inna niż wystawca.
Generowanie certyfikatu przy użyciu certyfikatu CSR i klucza i podpisywanie go przy użyciu klucza głównego urzędu certyfikacji
Użyj następującego polecenia, aby utworzyć certyfikat:
openssl x509 -req -in fabrikam.csr -CA contoso.crt -CAkey contoso.key -CAcreateserial -out fabrikam.crt -days 365 -sha256
Weryfikowanie nowo utworzonego certyfikatu
Użyj następującego polecenia, aby wydrukować dane wyjściowe pliku CRT i zweryfikować jego zawartość:
openssl x509 -in fabrikam.crt -text -noout
Sprawdź pliki w katalogu i upewnij się, że masz następujące pliki:
- contoso.crt
- contoso.key
- fabrikam.crt
- fabrikam.key
Konfigurowanie certyfikatu w ustawieniach protokołu TLS serwera internetowego
Na serwerze internetowym skonfiguruj protokół TLS przy użyciu plików fabrikam.crt i fabrikam.key. Jeśli serwer internetowy nie może pobrać dwóch plików, możesz połączyć je z jednym plikiem pem lub pfx przy użyciu poleceń OpenSSL.
IIS
Aby uzyskać instrukcje dotyczące importowania certyfikatu i przekazywania ich jako certyfikatu serwera w usługach IIS, zobacz HOW TO: Install Import Imported Certificates on a Web Server in Windows Server 2003 (Jak zainstalować zaimportowane certyfikaty na serwerze sieci Web w systemie Windows Server 2003).
Aby uzyskać instrukcje dotyczące powiązania protokołu TLS, zobacz How to Set Up SSL on IIS 7 (Jak skonfigurować protokół SSL w usługach IIS 7).
Apache
Poniższa konfiguracja to przykładowy host wirtualny skonfigurowany do obsługi protokołu SSL w systemie 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
Poniższa konfiguracja to przykładowy blok serwera NGINX z konfiguracją protokołu TLS:
Uzyskiwanie dostępu do serwera w celu zweryfikowania konfiguracji
Dodaj certyfikat główny do zaufanego magazynu głównego maszyny. Podczas uzyskiwania dostępu do witryny internetowej upewnij się, że cały łańcuch certyfikatów jest widoczny w przeglądarce.
Uwaga
Zakłada się, że system DNS został skonfigurowany tak, aby wskazywał nazwę serwera internetowego (w tym przykładzie
www.fabrikam.com
) na adres IP serwera internetowego. Jeśli nie, możesz edytować plik hostów, aby rozpoznać nazwę.Przejdź do witryny internetowej i kliknij ikonę blokady w polu adresu przeglądarki, aby zweryfikować informacje o witrynie i certyfikacie.
Weryfikowanie konfiguracji za pomocą protokołu OpenSSL
Możesz też użyć protokołu OpenSSL do zweryfikowania certyfikatu.
openssl s_client -connect localhost:443 -servername www.fabrikam.com -showcerts
Przekazywanie certyfikatu głównego do Ustawienia HTTP usługi Application Gateway
Aby przekazać certyfikat w usłudze Application Gateway, należy wyeksportować certyfikat crt do formatu cer zakodowanego w formacie Base-64. Ponieważ plik crt zawiera już klucz publiczny w formacie zakodowanym w formacie base-64, po prostu zmień nazwę rozszerzenia pliku z crt na cer.
Azure Portal
Aby przekazać zaufany certyfikat główny z portalu, wybierz Ustawienia zaplecza i wybierz pozycję HTTPS w protokole zaplecza.
Azure PowerShell
Możesz też użyć interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell do przekazania certyfikatu głównego. Poniższy kod jest przykładem programu Azure PowerShell.
Uwaga
Poniższy przykład dodaje zaufany certyfikat główny do bramy aplikacji, tworzy nowe ustawienie HTTP i dodaje nową regułę, zakładając, że pula zaplecza i odbiornik już istnieją.
## 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
Weryfikowanie kondycji zaplecza bramy aplikacji
- Kliknij widok Kondycja zaplecza bramy aplikacji, aby sprawdzić, czy sonda jest w dobrej kondycji.
- Powinien zostać wyświetlony stan w dobrej kondycji dla sondy HTTPS.
Następne kroki
Aby dowiedzieć się więcej na temat protokołu SSL\TLS w usłudze Application Gateway, zobacz Omówienie kończenia żądań protokołu TLS i kompleksowego szyfrowania TLS za pomocą usługi Application Gateway.