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.

  1. 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.

  2. 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

  1. 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

  1. Använd följande kommando för att generera certifikatsigneringsbegäran (CSR).

    openssl req -new -sha256 -key contoso.key -out contoso.csr
    
  2. 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).

    create root certificate

  3. 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.

  1. Använd följande kommando för att generera CSR:

    openssl req -new -sha256 -key fabrikam.key -out fabrikam.csr
    
  2. 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.

    Server certificate

Generera certifikatet med CSR och nyckeln och signera det med certifikatutfärdarens rotnyckel

  1. 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

  1. 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
    

    Certificate verification

  2. 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:

NGINX with TLS

Få åtkomst till servern för att verifiera konfigurationen

  1. Lägg till rotcertifikatet i datorns betrodda rotarkiv. När du öppnar webbplatsen kontrollerar du att hela certifikatkedjan visas i webbläsaren.

    Trusted root certificates

    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.

  2. 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

OpenSSL certificate verification

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.

Screenshot of adding a certificate using the portal.

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

  1. Klicka på vyn Serverdelshälsa för din programgateway för att kontrollera om avsökningen är felfri.
  2. Du bör se att statusen är felfri för HTTPS-avsökningen.

HTTPS probe

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.