Generera ett självsignerat certifikat för Azure Application Gateway med en egen rotcertifikatutfärdare
Application Gateway v2 SKU introducerar användningen av betrodda rotcertifikat för att tillåta TLS-anslutningar med serverdelsservrarna. Den här etableringen tar bort användningen av autentiseringscertifikat (enskilda Leaf-certifikat) som krävdes i V1-SKU:n. Rotcertifikatet är en Base-64-kodad X.509(. CER) formaterar rotcertifikat från serverdelscertifikatservern. Den identifierar rotcertifikatutfärdare (CA) som utfärdade servercertifikatet och servercertifikatet används sedan för TLS/SSL-kommunikationen.
Application Gateway litar som standard på webbplatsens certifikat om det är signerat av en välkänd certifikatutfärdare (till exempel GoDaddy eller DigiCert). Du behöver inte uttryckligen ladda upp rotcertifikatet i så fall. Mer information finns i Översikt över TLS-avslutning och TLS från slutpunkt till slutpunkt med Application Gateway. Men om du har en utvecklings-/testmiljö och inte vill köpa ett verifierat ca-signerat certifikat kan du skapa en egen anpassad rotcertifikatutfärdare och ett lövcertifikat som har signerats av rotcertifikatutfärdare.
Kommentar
Självgenererade certifikat är inte betrodda som standard och kan vara svåra att underhålla. Dessutom kan de använda inaktuella hash- och chiffersviter som kanske inte är starka. För bättre säkerhet kan du köpa ett certifikat som signerats av en välkänd certifikatutfärdare.
Du kan använda följande alternativ för att generera ditt privata certifikat för serverdels-TLS-anslutningar.
Använd verktyget för privata certifikatgeneratorer med ett klick. Med det domännamn (eget namn) som du anger utför det här verktyget samma steg som beskrivs i den här artikeln för att generera rot- och servercertifikat. Med de genererade certifikatfilerna kan du omedelbart ladda upp rotcertifikatet (. CER)-fil till serverdelsinställningen för din gateway och motsvarande certifikatkedja (. PFX) till serverdelen. Lösenordet för PFX-filen anges också i den nedladdade ZIP-filen.
Använd OpenSSL-kommandon för att anpassa och generera certifikat enligt dina behov. Fortsätt att följa anvisningarna i den här artikeln om du vill göra detta helt på egen hand.
I den här artikeln får du lära dig att:
- Skapa en egen anpassad certifikatutfärdare
- Skapa ett självsignerat certifikat signerat av din anpassade certifikatutfärdare
- Ladda upp ett självsignerat rotcertifikat till en Application Gateway för att autentisera serverdelsservern
Förutsättningar
OpenSSL på en dator som kör Windows eller Linux
Det kan finnas andra verktyg för certifikathantering, men i den här självstudien används OpenSSL. Du hittar OpenSSL paketerat med många Linux-distributioner, till exempel Ubuntu.
En webbserver
Till exempel Apache, IIS eller NGINX för att testa certifikaten.
En Application Gateway v2 SKU
Om du inte har någon befintlig programgateway kan du läsa Snabbstart: Dirigera webbtrafik med Azure Application Gateway – Azure-portalen.
Skapa ett rotcertifikatutfärdarcertifikat
Skapa rotcertifikatutfärdarcertifikatet med OpenSSL.
Skapa rotnyckeln
Logga in på datorn där OpenSSL är installerat och kör följande kommando. Detta skapar en krypterad nyckel.
openssl ecparam -out contoso.key -name prime256v1 -genkey
Skapa ett rotcertifikat och signera det själv
Använd följande kommando för att generera certifikatsigneringsbegäran (CSR).
openssl req -new -sha256 -key contoso.key -out contoso.csr
När du uppmanas till det skriver du lösenordet för rotnyckeln och organisationsinformationen för den anpassade certifikatutfärdaren, till exempel land/region, stat, organisation, organisationsenhet och det fullständigt kvalificerade domännamnet (det här är utfärdarens domän).
Använd följande kommando för att generera rotcertifikatet.
openssl x509 -req -sha256 -days 365 -in contoso.csr -signkey contoso.key -out contoso.crt
De tidigare kommandona skapar rotcertifikatet. Du använder detta för att signera servercertifikatet.
Skapa ett servercertifikat
Därefter skapar du ett servercertifikat med OpenSSL.
Skapa certifikatets nyckel
Använd följande kommando för att generera nyckeln för servercertifikatet.
openssl ecparam -out fabrikam.key -name prime256v1 -genkey
Skapa CSR (begäran om certifikatsignering)
CSR är en offentlig nyckel som ges till en certifikatutfärdare när du begär ett certifikat. Certifikatutfärdare utfärdar certifikatet för den här specifika begäran.
Kommentar
CN (eget namn) för servercertifikatet måste skilja sig från utfärdarens domän. I det här fallet är www.contoso.com
till exempel CN för utfärdaren och servercertifikatets CN är www.fabrikam.com
.
Använd följande kommando för att generera CSR:
openssl req -new -sha256 -key fabrikam.key -out fabrikam.csr
När du uppmanas till det skriver du lösenordet för rotnyckeln och organisationsinformationen för den anpassade certifikatutfärdarorganisationen: Land/region, delstat, organisation, organisationsenhet och det fullständigt kvalificerade domännamnet. Det här är webbplatsens domän och den bör skilja sig från utfärdaren.
Generera certifikatet med CSR och nyckeln och signera det med certifikatutfärdarens rotnyckel
Använd följande kommando för att skapa certifikatet:
openssl x509 -req -in fabrikam.csr -CA contoso.crt -CAkey contoso.key -CAcreateserial -out fabrikam.crt -days 365 -sha256
Verifiera det nyligen skapade certifikatet
Använd följande kommando för att skriva utdata från CRT-filen och verifiera dess innehåll:
openssl x509 -in fabrikam.crt -text -noout
Kontrollera filerna i katalogen och se till att du har följande filer:
- contoso.crt
- contoso.key
- fabrikam.crt
- fabrikam.key
Konfigurera certifikatet i webbserverns TLS-inställningar
På webbservern konfigurerar du TLS med hjälp av filerna fabrikam.crt och fabrikam.key. Om webbservern inte kan ta två filer kan du kombinera dem till en enda .pem- eller .pfx-fil med hjälp av OpenSSL-kommandon.
IIS
Anvisningar om hur du importerar certifikat och laddar upp dem som servercertifikat i IIS finns i HOW TO: Install Imported Certificates on a Web Server in Windows Server 2003 (Så här gör du: Installera importerade certifikat på en webbserver i Windows Server 2003).
Instruktioner för TLS-bindning finns i Konfigurera SSL för IIS 7.
Apache
Följande konfiguration är ett exempel på en virtuell värd som konfigurerats för SSL i 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
Följande konfiguration är ett exempel på NGINX-serverblock med TLS-konfiguration:
Få åtkomst till servern för att verifiera konfigurationen
Lägg till rotcertifikatet i datorns betrodda rotarkiv. När du öppnar webbplatsen kontrollerar du att hela certifikatkedjan visas i webbläsaren.
Kommentar
Det antas att DNS har konfigurerats för att peka webbservernamnet (i det här exemplet
www.fabrikam.com
) på webbserverns IP-adress. Annars kan du redigera värdfilen för att matcha namnet.Bläddra till webbplatsen och klicka på låsikonen i webbläsarens adressruta för att verifiera webbplats- och certifikatinformationen.
Verifiera konfigurationen med OpenSSL
Du kan också använda OpenSSL för att verifiera certifikatet.
openssl s_client -connect localhost:443 -servername www.fabrikam.com -showcerts
Ladda upp rotcertifikatet till Application Gateways HTTP-Inställningar
Om du vill ladda upp certifikatet i Application Gateway måste du exportera .crt-certifikatet till ett .cer-format base-64-kodat. Eftersom .crt redan innehåller den offentliga nyckeln i base-64-kodat format byter du bara namn på filnamnstillägget från .crt till .cer.
Azure Portal
Om du vill ladda upp det betrodda rotcertifikatet från portalen väljer du serverdelen Inställningar och väljer HTTPS i backend-protokollet.
Azure PowerShell
Du kan också använda Azure CLI eller Azure PowerShell för att ladda upp rotcertifikatet. Följande kod är ett Azure PowerShell-exempel.
Kommentar
Följande exempel lägger till ett betrott rotcertifikat till programgatewayen, skapar en ny HTTP-inställning och lägger till en ny regel, förutsatt att serverdelspoolen och lyssnaren redan finns.
## 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
Kontrollera hälsotillståndet för programgatewayens serverdel
- Klicka på vyn Serverdelshälsa för din programgateway för att kontrollera om avsökningen är felfri.
- Du bör se att statusen är felfri för HTTPS-avsökningen.
Nästa steg
Mer information om SSL\TLS i Application Gateway finns i Översikt över TLS-avslutning och TLS från slutpunkt till slutpunkt med Application Gateway.