Een zelfondertekend certificaat van Azure Application Gateway genereren met een aangepast basiscertificaat

De Application Gateway v2-SKU introduceert het gebruik van vertrouwde basiscertificaten om TLS-verbindingen met de back-endservers toe te staan. Met deze inrichting wordt het gebruik van verificatiecertificaten (afzonderlijke Leaf-certificaten) verwijderd die vereist zijn in de v1-SKU. Het basiscertificaat is een met Base-64 gecodeerde X.509(. CER) maak het basiscertificaat van de back-endcertificaatserver op. Het identificeert de basiscertificeringsinstantie (CA) die het servercertificaat heeft uitgegeven en het servercertificaat wordt vervolgens gebruikt voor de TLS/SSL-communicatie.

Application Gateway vertrouwt het certificaat van uw website standaard als het is ondertekend door een bekende CERTIFICERINGsinstantie (bijvoorbeeld GoDaddy of DigiCert). In dat geval hoeft u het basiscertificaat niet expliciet te uploaden. Zie Overzicht van TLS-beëindiging en end-to-end TLS met Application Gateway voor meer informatie. Als u echter een ontwikkel-/testomgeving hebt en u geen geverifieerd ca-ondertekend certificaat wilt kopen, kunt u uw eigen aangepaste basis-CA en een bladcertificaat maken dat is ondertekend door die basis-CA.

Notitie

Zelf gegenereerde certificaten worden niet standaard vertrouwd en kunnen moeilijk te onderhouden zijn. Ze kunnen ook verouderde hash- en coderingssuites gebruiken die mogelijk niet sterk zijn. Koop voor betere beveiliging een certificaat dat is ondertekend door een bekende certificeringsinstantie.

U kunt de volgende opties gebruiken om uw privécertificaat te genereren voor back-end TLS-verbindingen.

  1. Gebruik het hulpprogramma voor het genereren van persoonlijke certificaten met één klik. Met behulp van de domeinnaam (algemene naam) die u opgeeft, voert dit hulpprogramma dezelfde stappen uit als beschreven in dit artikel voor het genereren van basis- en servercertificaten. Met de gegenereerde certificaatbestanden kunt u het basiscertificaat direct uploaden (. CER)-bestand naar de back-endinstelling van uw gateway en de bijbehorende certificaatketen (. PFX) naar de back-endserver. Het wachtwoord voor het PFX-bestand wordt ook opgegeven in het gedownloade ZIP-bestand.

  2. Gebruik OpenSSL-opdrachten om certificaten aan te passen en te genereren op basis van uw behoeften. Volg de instructies in dit artikel als u dit helemaal zelf wilt doen.

In dit artikel leert u het volgende:

  • Uw eigen aangepaste certificeringsinstantie maken
  • Een zelfondertekend certificaat maken dat is ondertekend door uw aangepaste CA
  • Een zelfondertekend basiscertificaat uploaden naar een Application Gateway om de back-endserver te verifiëren

Vereisten

  • OpenSSL op een computer met Windows of Linux

    Hoewel er andere hulpprogramma's beschikbaar zijn voor certificaatbeheer, gebruikt deze zelfstudie OpenSSL. OpenSSL is gebundeld met veel Linux-distributies, zoals Ubuntu.

  • Een webserver

    Bijvoorbeeld Apache, IIS of NGINX om de certificaten te testen.

  • Een Application Gateway v2-SKU

    Als u geen bestaande toepassingsgateway hebt, raadpleegt u quickstart: Webverkeer omleiden met Azure-toepassing Gateway - Azure Portal.

Een basis-CA-certificaat maken

Maak uw basis-CA-certificaat met behulp van OpenSSL.

De hoofdsleutel maken

  1. Meld u aan bij uw computer waarop OpenSSL is geïnstalleerd en voer de volgende opdracht uit. Hiermee maakt u een versleutelde sleutel.

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

Een basiscertificaat maken en het zelf ondertekenen

  1. Gebruik de volgende opdracht om de aanvraag voor certificaatondertekening (CSR) te genereren.

    openssl req -new -sha256 -key contoso.key -out contoso.csr
    
  2. Wanneer u hierom wordt gevraagd, typt u het wachtwoord voor de hoofdsleutel en de organisatiegegevens voor de aangepaste CERTIFICERINGsinstantie, zoals Land/Regio, Staat, Organisatie,OE en de volledig gekwalificeerde domeinnaam (dit is het domein van de verlener).

    create root certificate

  3. Gebruik de volgende opdracht om het basiscertificaat te genereren.

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

    Met de vorige opdrachten maakt u het basiscertificaat. U gebruikt dit om uw servercertificaat te ondertekenen.

Een servercertificaat maken

Vervolgens maakt u een servercertificaat met behulp van OpenSSL.

De sleutel van het certificaat maken

Gebruik de volgende opdracht om de sleutel voor het servercertificaat te genereren.

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

De CSR maken (aanvraag voor certificaatondertekening)

De CSR is een openbare sleutel die aan een CA wordt gegeven bij het aanvragen van een certificaat. De CA geeft het certificaat voor deze specifieke aanvraag uit.

Notitie

De CN (algemene naam) voor het servercertificaat moet afwijken van het domein van de verlener. In dit geval is www.contoso.com de CN voor de verlener bijvoorbeeld en de CN van het servercertificaat.www.fabrikam.com

  1. Gebruik de volgende opdracht om de CSR te genereren:

    openssl req -new -sha256 -key fabrikam.key -out fabrikam.csr
    
  2. Wanneer u hierom wordt gevraagd, typt u het wachtwoord voor de hoofdsleutel en de organisatiegegevens voor de aangepaste CA: Land/Regio, Staat, Organisatie,OE en de volledig gekwalificeerde domeinnaam. Dit is het domein van de website en moet afwijken van de uitgever.

    Server certificate

Genereer het certificaat met de CSR en de sleutel en onderteken het met de basissleutel van de CA

  1. Gebruik de volgende opdracht om het certificaat te maken:

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

Het zojuist gemaakte certificaat controleren

  1. Gebruik de volgende opdracht om de uitvoer van het CRT-bestand af te drukken en de inhoud ervan te controleren:

    openssl x509 -in fabrikam.crt -text -noout
    

    Certificate verification

  2. Controleer de bestanden in uw map en zorg ervoor dat u de volgende bestanden hebt:

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

Het certificaat configureren in de TLS-instellingen van uw webserver

Configureer TLS op uw webserver met behulp van de bestanden fabrikam.crt en fabrikam.key. Als uw webserver geen twee bestanden kan gebruiken, kunt u ze combineren tot één PEM- of PFX-bestand met behulp van OpenSSL-opdrachten.

IIS

Zie PROCEDURE: Geïmporteerde certificaten installeren op een webserver in Windows Server 2003 voor instructies over het importeren en uploaden als servercertificaat in IIS.

Zie SSL instellen op IIS 7 voor instructies voor TLS-binding.

Apache

De volgende configuratie is een voorbeeld van een virtuele host die is geconfigureerd voor SSL in 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

De volgende configuratie is een voorbeeld van een NGINX-serverblok met TLS-configuratie:

NGINX with TLS

Toegang tot de server om de configuratie te controleren

  1. Voeg het basiscertificaat toe aan het vertrouwde basisarchief van uw computer. Wanneer u de website opent, moet u ervoor zorgen dat de hele certificaatketen wordt weergegeven in de browser.

    Trusted root certificates

    Notitie

    Er wordt van uitgegaan dat DNS is geconfigureerd om de webservernaam (in dit voorbeeld www.fabrikam.com) te laten verwijzen naar het IP-adres van uw webserver. Zo niet, dan kunt u het hosts-bestand bewerken om de naam op te lossen.

  2. Blader naar uw website en klik op het vergrendelingspictogram in het adresvak van uw browser om de site- en certificaatgegevens te controleren.

De configuratie controleren met OpenSSL

U kunt ook OpenSSL gebruiken om het certificaat te verifiëren.

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

OpenSSL certificate verification

Het basiscertificaat uploaden naar de HTTP-Instellingen van Application Gateway

Als u het certificaat wilt uploaden in Application Gateway, moet u het CRT-certificaat exporteren naar een CER-indeling met Base-64-codering. Aangezien .crt de openbare sleutel al bevat in de met base-64 gecodeerde indeling, wijzigt u de bestandsextensie van .crt in .cer.

Azure Portal

Als u het vertrouwde basiscertificaat vanuit de portal wilt uploaden, selecteert u de back-end-Instellingen en selecteert u HTTPS in het back-endprotocol.

Screenshot of adding a certificate using the portal.

Azure PowerShell

U kunt ook Azure CLI of Azure PowerShell gebruiken om het basiscertificaat te uploaden. De volgende code is een Azure PowerShell-voorbeeld.

Notitie

Het volgende voorbeeld voegt een vertrouwd basiscertificaat toe aan de toepassingsgateway, maakt een nieuwe HTTP-instelling en voegt een nieuwe regel toe, ervan uitgaande dat de back-endpool en de listener al bestaan.

## 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

De back-endstatus van de toepassingsgateway controleren

  1. Klik op de weergave Back-endstatus van uw toepassingsgateway om te controleren of de test in orde is.
  2. U ziet dat de status in orde is voor de HTTPS-test.

HTTPS probe

Volgende stappen

Zie Overzicht van TLS-beëindiging en end-to-end TLS met Application Gateway voor meer informatie over SSL\TLS in Application Gateway.