Generare un certificato autofirmato di gateway applicazione Azure con una CA radice personalizzata
Lo SKU v2 del gateway applicazione introduce l'uso di certificato radice trusted per consentire le connessioni TLS con i server back-end. Questo provisioning rimuove l'uso dei certificati di autenticazione (singoli certificati foglia) necessari nello SKU v1. Il certificato radice è un certificato radice con codifica base 64 X.509(.CER) del server di certificati back-end. Identifica l'autorità di certificazione radice (CA) che ha emesso il certificato del server che viene usato per la comunicazione TLS/SSL.
Il gateway applicazione considera attendibile il certificato del sito Web per impostazione predefinita se è firmato da un'autorità di certificazione nota (ad esempio GoDaddy o DigiCert). In tal caso, non è necessario caricare in modo esplicito il certificato radice. Per altre informazioni, vedere Panoramica della terminazione TLS e di TLS end-to-end con il gateway applicazione. Tuttavia, se si dispone di un ambiente di sviluppo/test e non si vuole acquistare un certificato firmato dalla CA verificata, è possibile creare una CA radice personalizzata e un certificato foglia firmato da quella CA radice.
Nota
I certificati autogenerati non sono attendibili per impostazione predefinita e possono essere difficili da gestire. Possono anche usare pacchetti hash e di crittografia obsoleti che potrebbero non essere sicuri. Per una maggiore sicurezza, acquistare un certificato firmato da un'autorità di certificazione nota.
È possibile usare le opzioni seguenti per generare il certificato privato per le connessioni TLS back-end.
Usare lo strumento generatore di certificati privato con un clic. Usando il nome di dominio (nome comune) specificato, questo strumento esegue gli stessi passaggi descritti in questo articolo per generare certificati radice e di server. Con i file di certificato generati, è possibile caricare immediatamente il certificato radice (. File CER) nell'impostazione back-end del gateway e nella catena di certificati corrispondente (. PFX) nel server back-end. La password per il file PFX viene fornita anche nel file ZIP scaricato.
Usare i comandi OpenSSL per personalizzare e generare certificati in base alle esigenze. Continuare a seguire le istruzioni in questo articolo se si vuole eseguire questa operazione totalmente in maniera autonoma.
In questo articolo verrà spiegato come:
- Creare un'autorità di certificazione personalizzata
- Creare un certificato autofirmato con firma della CA personalizzata
- Caricare un certificato radice autofirmato in un gateway applicazione per autenticare il server back-end
Prerequisiti
OpenSSL in un computer che esegue Windows o Linux
Sebbene siano disponibili altri strumenti per la gestione dei certificati, in questa esercitazione viene usato OpenSSL. È possibile trovare OpenSSL in aggregazione con molte distribuzioni di Linux, ad esempio Ubuntu.
Un server Web
Esempio: Apache, IIS o NGINX per testare i certificati.
SKU v2 del gateway applicazione
Se non si ha un gateway applicazione esistente, vedere Avvio rapido: Indirizzare il traffico Web con il gateway applicazione di Azure - Portale di Azure.
Creare un certificato CA radice
Creare il certificato CA radice usando OpenSSL.
Creare la chiave radice
Accedere al computer in cui è installato OpenSSL ed eseguire questo comando. Verrà creata una chiave crittografata.
openssl ecparam -out contoso.key -name prime256v1 -genkey
Creare un certificato radice e firmarlo in modo autonomo
Usare il comando seguente per generare la richiesta di firma del certificato (CSR).
openssl req -new -sha256 -key contoso.key -out contoso.csr
Quando richiesto, digitare la password per la chiave radice e le informazioni sull'organizzazione per l'autorità di certificazione personalizzata, ad esempio paese/area geografica, stato, organizzazione, unità organizzativa e nome di dominio completo (dominio dell'emittente).
Usare il comando seguente per generare il certificato radice.
openssl x509 -req -sha256 -days 365 -in contoso.csr -signkey contoso.key -out contoso.crt
I comandi precedenti consentono di creare il certificato radice che verrà usato per firmare il certificato del server.
Creare un certificato del server
Successivamente, viene creato un certificato del server tramite OpenSSL.
Creare la chiave del certificato
Usare il comando seguente per generare la chiave per il certificato del server.
openssl ecparam -out fabrikam.key -name prime256v1 -genkey
Creare il file con estensione csr (richiesta di firma del certificato)
Tale file è una chiave pubblica assegnata a una CA quando viene richiesto un certificato. La CA emette il certificato per questa richiesta specifica.
Nota
Il nome comune per il certificato del server deve essere diverso dal dominio dell'emittente. In questo caso, ad esempio, il nome comune per l'emittente è www.contoso.com
, mentre quello del certificato del server è www.fabrikam.com
.
Usare il comando seguente per generare il file con estensione csr:
openssl req -new -sha256 -key fabrikam.key -out fabrikam.csr
Quando richiesto, digitare la password per la chiave radice e le informazioni dell'organizzazione per la CA personalizzata: Paese/area geografica, stato, organizzazione, unità organizzativa e nome di dominio completo. Quest'ultimo è il dominio del sito Web e deve essere diverso dall'emittente.
Generare il certificato con file csr e la chiave e firmarlo con la chiave radice della CA
Eseguire questo comando per creare il certificato:
openssl x509 -req -in fabrikam.csr -CA contoso.crt -CAkey contoso.key -CAcreateserial -out fabrikam.crt -days 365 -sha256
Verificare il certificato creato:
Usare il comando seguente per stampare l'output del file con estensione crt e verificarne il contenuto:
openssl x509 -in fabrikam.crt -text -noout
Verificare i file nella directory e assicurarsi che siano presenti i file seguenti:
- contoso.crt
- contoso.key
- fabrikam.crt
- fabrikam.key
Configurare il certificato nelle impostazioni TLS del server Web
Nel server Web configurare TLS usando i file fabrikam.crt e fabrikam.key. Se il server Web non può accettare due file, è possibile combinarli in un singolo file con estensione pem o pfx usando i comandi OpenSSL.
IIS
Per istruzioni su come importare il certificato e caricarli come certificato server in IIS, vedere PROCEDURA: Installare certificati importati in un server Web in Windows Server 2003.
Per istruzioni sull'associazione TLS, vedere Come configurare SSL in IIS 7.
Apache
La configurazione seguente è un esempio di host virtuale configurato per 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
La configurazione seguente è un esempio di blocco del server NGINX con la configurazione TLS:
Accedere al server per verificare la configurazione
Aggiungere il certificato radice all'archivio radice attendibile del computer. Quando si accede al sito Web, verificare che l'intera catena di certificati venga visualizzata nel browser.
Nota
Si presuppone che il DNS sia stato configurato per indicare il nome del server Web (in questo esempio,
www.fabrikam.com
) all'indirizzo IP del server Web. In caso contrario, è possibile modificare il file hosts per risolvere il nome.Passare al sito Web e fare clic sull'icona a forma di lucchetto nella casella dell'indirizzo del browser per verificare il sito e le informazioni sul certificato.
Verificare la configurazione con OpenSSL
In alternativa, è possibile usare OpenSSL per verificare il certificato.
openssl s_client -connect localhost:443 -servername www.fabrikam.com -showcerts
Caricare il certificato radice nelle impostazioni HTTP del gateway applicazione
Per caricare il certificato nel gateway applicazione, è necessario esportare il certificato con estensione crt in un formato con estensione cer con codifica base 64. Poiché il file con estensione crt contiene già la chiave pubblica nel formato con codifica base 64, è sufficiente rinominare l'estensione del file da crt a cer.
Azure portal
Per caricare il certificato radice attendibile dal portale, selezionare impostazioni back-end e selezionare HTTPS nel protocollo back-end.
Azure PowerShell
In alternativa, è possibile usare l'interfaccia della riga di comando di Azure o Azure PowerShell per caricare il certificato radice. Il codice seguente è un esempio di Azure PowerShell.
Nota
Nell'esempio seguente viene aggiunto un certificato radice trusted al gateway applicazione, viene creata una nuova impostazione HTTP e viene aggiunta una nuova regola, supponendo che il pool back-end e il listener esistano già.
## 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
Verificare l'integrità back-end del gateway applicazione
- Fare clic sulla vista Integrità back-end dell'applicazione gateway per verificare se il probe è integro.
- Per il probe HTTPS lo stato è Integro.
Passaggi successivi
Per altre informazioni su SSL\TLS nel gateway applicazione, vedere Panoramica della terminazione TLS e di TLS end-to-end con il gateway applicazione.