Generare ed esportare certificati - Linux - OpenSSL

Gateway VPN connessioni da punto a sito (P2S) possono essere configurate per l'uso dell'autenticazione del certificato. La chiave pubblica del certificato radice viene caricata in Azure e ogni client VPN deve avere i file di certificato appropriati installati localmente per connettersi. Questo articolo illustra come creare un certificato radice autofirmato e generare certificati client usando OpenSSL. Per altre informazioni, vedere Configurazione da punto a sito - Autenticazione del certificato.

Prerequisiti

Per usare questo articolo, è necessario disporre di un computer che esegue OpenSSL.

Certificato radice autofirmato

Questa sezione illustra come generare un certificato radice autofirmato. Dopo aver generato il certificato, si esporta il file di dati della chiave pubblica del certificato radice.

  1. L'esempio seguente consente di generare il certificato radice autofirmato.

    openssl genrsa -out caKey.pem 2048
    openssl req -x509 -new -nodes -key caKey.pem -subj "/CN=VPN CA" -days 3650 -out caCert.pem
    
  2. Stampare i dati pubblici del certificato radice autofirmato in formato Base64. Questo è il formato supportato da Azure. Caricare questo certificato in Azure come parte dei passaggi di configurazione da punto a sito .

    openssl x509 -in caCert.pem -outform der | base64 -w0 && echo
    

Certificati client

In questa sezione viene generato il certificato utente (certificato client). I file di certificato vengono generati nella directory locale in cui si eseguono i comandi. È possibile usare lo stesso certificato client in ogni computer client o generare certificati specifici per ogni client. È fondamentale che il certificato client sia firmato dal certificato radice.

  1. Per generare un certificato client, usare gli esempi seguenti.

    export PASSWORD="password"
    export USERNAME=$(hostnamectl --static)
    
    # Generate a private key
    openssl genrsa -out "${USERNAME}Key.pem" 2048
    
    # Generate a CSR (Certificate Sign Request)
    openssl req -new -key "${USERNAME}Key.pem" -out "${USERNAME}Req.pem" -subj "/CN=${USERNAME}"
    
    # Sign the CSR using the CA certificate and CA key
    openssl x509 -req -days 365 -in "${USERNAME}Req.pem" -CA caCert.pem -CAkey caKey.pem -CAcreateserial -out "${USERNAME}Cert.pem" -extfile <(echo -e "subjectAltName=DNS:${USERNAME}\nextendedKeyUsage=clientAuth")
    
  2. Per verificare il certificato client, usare l'esempio seguente.

    openssl verify -CAfile caCert.pem caCert.pem "${USERNAME}Cert.pem"
    

Passaggi successivi

Per continuare i passaggi di configurazione, vedere Autenticazione del certificato da punto a sito.