Generare ed esportare certificati per le connessioni VPN utente tramite PowerShell

Le configurazioni VPN utente (da punto a sito) possono essere configurate per richiedere l'autenticazione dei certificati. Questo articolo illustra come creare un certificato radice autofirmato e generare certificati client usando PowerShell in Windows 10 (o versione successiva) o Windows Server 2016 (o versione successiva).

I cmdlet di PowerShell usati per generare certificati fanno parte del sistema operativo e non funzionano in altre versioni di Windows. Il sistema operativo host viene usato solo per generare i certificati. Dopo aver generato i certificati, è possibile caricarli o installarli in qualsiasi sistema operativo client supportato.

Se non si dispone di un computer che soddisfa i requisiti del sistema operativo, è possibile usare MakeCert per generare i certificati. I certificati generati con uno dei due metodi possono essere installati in qualsiasi sistema operativo client supportato.

Creare un certificato radice autofirmato

Usare il cmdlet New-SelfSignedCertificate per creare un certificato radice autofirmato. Per altre informazioni sui parametri, vedere New-SelfSignedCertificate.

  1. Da un computer che esegue Windows 10 o versione successiva o Windows Server 2016 aprire una console di Windows PowerShell con privilegi elevati.

  2. Creare un certificato radice autofirmato. Nell'esempio seguente viene creato un certificato radice autofirmato denominato "P2SRootCert" che viene installato automaticamente in "Certificates-Current User\Personal\Certificates". È possibile visualizzare il certificato aprendo certmgr.msc o Gestire i certificati utente.

    Apportare le modifiche necessarie prima di usare questo esempio. Il parametro 'NotAfter' è facoltativo. Per impostazione predefinita, senza questo parametro, il certificato scade in 1 anno.

    $params = @{
        Type = 'Custom'
        Subject = 'CN=P2SRootCert'
        KeySpec = 'Signature'
        KeyExportPolicy = 'Exportable'
        KeyUsage = 'CertSign'
        KeyUsageProperty = 'Sign'
        KeyLength = 2048
        HashAlgorithm = 'sha256'
        NotAfter = (Get-Date).AddMonths(24)
        CertStoreLocation = 'Cert:\CurrentUser\My'
    }
    $cert = New-SelfSignedCertificate @params
    
  3. Lasciare aperta la console di PowerShell e procedere con i passaggi successivi per generare un certificato client.

Generare un certificato client

Ogni computer client che si connette a una rete virtuale usando un certificato client deve essere installato. È possibile generare un certificato client da un certificato radice autofirmato, quindi esportare e installare il certificato client. Se il certificato client non è installato, l'autenticazione non riesce.

I passaggi seguenti illustrano come generare un certificato client da un certificato radice autofirmato. È possibile generare più certificati client dallo stesso certificato radice. Quando si generano certificati client con la procedura seguente, il certificato client viene installato automaticamente nel computer che è stato usato per generare il certificato. Se si vuole installare un certificato client in un altro computer client, esportare il certificato.

Negli esempi viene usato il cmdlet New-SelfSignedCertificate per generare un certificato client.

Esempio 1 : la sessione della console di PowerShell è ancora aperta

Usare questo esempio se la console di PowerShell non è stata chiusa dopo aver creato il certificato radice autofirmato. Questo esempio continua dalla sezione precedente e usa la variabile dichiarata "$cert". Se la console di PowerShell è stata chiusa dopo aver creato il certificato radice autofirmato o si creano certificati client aggiuntivi in una nuova sessione della console di PowerShell, seguire la procedura descritta nell'esempio 2.

Modificare ed eseguire l'esempio per generare un certificato client. Se si esegue l'esempio seguente senza modificarlo, il risultato è un certificato client denominato "P2SChildCert". Se si desidera assegnare un nome diverso al certificato figlio, modificare il valore CN. Non modificare TextExtension durante l'esecuzione di questo esempio. Il certificato client generato viene installato automaticamente in "Certificati-Utente corrente\Personale\Certificati" nel computer in uso.


   $params = @{
       Type = 'Custom'
       Subject = 'CN=P2SChildCert'
       DnsName = 'P2SChildCert'
       KeySpec = 'Signature'
       KeyExportPolicy = 'Exportable'
       KeyLength = 2048
       HashAlgorithm = 'sha256'
       NotAfter = (Get-Date).AddMonths(18)
       CertStoreLocation = 'Cert:\CurrentUser\My'
       Signer = $cert
       TextExtension = @(
        '2.5.29.37={text}1.3.6.1.5.5.7.3.2')
   }
   New-SelfSignedCertificate @params

Esempio 2 - Nuova sessione della console di PowerShell

Se si creano certificati client aggiuntivi o non si usa la stessa sessione di PowerShell usata per creare il certificato radice autofirmato, seguire questa procedura:

  1. Identificare il certificato radice autofirmato che viene installato nel computer. Questo cmdlet restituisce un elenco dei certificati installati nel computer in uso.

    Get-ChildItem -Path "Cert:\CurrentUser\My"
    
  2. Individuare il nome dell'oggetto nell'elenco restituito e quindi copiare in un file di testo l'identificazione personale che si trova accanto a esso. Nell'esempio seguente ci sono due certificati. Il nome CN è il nome del certificato radice autofirmato da cui si desidera generare un certificato figlio. In questo caso "P2SRootCert".

    Thumbprint                                Subject
    ----------                                -------
    AED812AD883826FF76B4D1D5A77B3C08EFA79F3F  CN=P2SChildCert4
    7181AA8C1B4D34EEDB2F3D3BEC5839F3FE52D655  CN=P2SRootCert
    
  3. Dichiarare una variabile per il certificato radice usando l'identificazione personale del passaggio precedente. Sostituire THUMBPRINT con l'identificazione personale del certificato radice autofirmato da cui si desidera generare un certificato figlio.

    $cert = Get-ChildItem -Path "Cert:\CurrentUser\My\<THUMBPRINT>"
    

    Ad esempio, usando l'identificazione personale per P2SRootCert nel passaggio precedente, la variabile è simile alla seguente:

    $cert = Get-ChildItem -Path "Cert:\CurrentUser\My\7181AA8C1B4D34EEDB2F3D3BEC5839F3FE52D655"
    
  4. Modificare ed eseguire l'esempio per generare un certificato client. Se si esegue l'esempio seguente senza modificarlo, il risultato è un certificato client denominato "P2SChildCert". Se si desidera assegnare un nome diverso al certificato figlio, modificare il valore CN. Non modificare TextExtension durante l'esecuzione di questo esempio. Il certificato client generato viene installato automaticamente in "Certificati-Utente corrente\Personale\Certificati" nel computer in uso.

    $params = @{
        Type = 'Custom'
        Subject = 'CN=P2SChildCert'
        DnsName = 'P2SChildCert1'
        KeySpec = 'Signature'
        KeyExportPolicy = 'Exportable'
        KeyLength = 2048
        HashAlgorithm = 'sha256'
        NotAfter = (Get-Date).AddMonths(18)
        CertStoreLocation = 'Cert:\CurrentUser\My'
        Signer = $cert
        TextExtension = @(
         '2.5.29.37={text}1.3.6.1.5.5.7.3.2')
    }
    New-SelfSignedCertificate @params
    

Esportare la chiave pubblica del certificato radice (con estensione cer)

Dopo aver creato un certificato radice autofirmato, esportare il file cer del certificato radice (non la chiave privata). In seguito verranno caricati i dati del certificato necessari contenuti nel file in Azure. La procedura seguente consente di esportare il file cer per il certificato radice autofirmato e recuperare i dati del certificato necessari.

  1. Per ottenere il file cer del certificato, aprire Gestisci certificati utente.

    Individuare il certificato radice autofirmato, in genere in "Certificati - Utente corrente\Personale\Certificati" e fare clic con il pulsante destro del mouse. Fare clic su Tutte le attività ->Esporta. Si avvia la procedura di Esportazione guidata certificati.

    Se non è possibile trovare il certificato in "Utente corrente\Personale\Certificati", è possibile che sia stato aperto accidentalmente "Certificati - Computer locale", anziché "Certificati - Utente corrente".

    Screenshot che mostra la finestra Certificati con Tutte le attività e quindi Esporta selezionata.

  2. Nella procedura guidata fare clic su Avanti.

  3. Selezionare No, non esportare la chiave privata e quindi fare clic su Avanti.

    Screenshot che mostra Non esportare la chiave privata.

  4. Nella pagina Formato file di esportazione selezionare Codificato Base 64 X.509 (.CER) e quindi fare clic su Avanti.

    Screenshot che mostra l'esportazione con codifica Base 64.

  5. In File da esportare fare clic su Sfoglia e passare alla posizione in cui si vuole esportare il certificato. Per Nome file, assegnare un nome al file del certificato. Quindi fare clic su Next.

  6. Fare clic su Fine per esportare il certificato.

  7. Verrà visualizzata una conferma che indica che l'esportazione è riuscita.

  8. Passare al percorso in cui è stato esportato il certificato e aprirlo usando un editor di testo, ad esempio Blocco note. Se il certificato è stato esportato nel file X.509 con codifica Base 64 (). Formato CER, verrà visualizzato testo simile all'esempio seguente. La sezione evidenziata in blu contiene le informazioni copiate e caricate in Azure.

    Screenshot che mostra il file CER aperto nel Blocco note con i dati del certificato evidenziati.

    Se il file non è simile all'esempio, in genere significa che non è stato esportato usando la X.509 con codifica Base 64(. Formato CER. Inoltre, se si usa un editor di testo diverso dal Blocco note, è possibile che alcuni editor possano introdurre una formattazione imprevista in background. Ciò può creare problemi quando il testo viene caricato da questo certificato in Azure.

Esportare il certificato radice autofirmato e la chiave privata per archiviarli (facoltativo)

Si consiglia di esportare il certificato radice autofirmato e archiviarlo in un percorso sicuro per avere una copia di backup. Se necessario, in seguito è possibile installarlo su un altro computer e generare altri certificati client. Per esportare il certificato radice autofirmato come file .pfx, selezionare il certificato radice ed eseguire la stessa procedura descritta in Esportazione di un certificato client.

Esportare il certificato client

Quando viene generato un certificato client, viene automaticamente installato nel computer che è stato usato per generarlo. Se si vuole installare il certificato client in un altro computer client, è necessario prima esportare il certificato client.

  1. Per esportare un certificato client, aprire Gestire i certificati utente. Per impostazione predefinita, i certificati client generati si trovano in "Certificati-Utente corrente\Personale\Certificati". Fare clic con il pulsante destro del mouse sul certificato client da esportare, scegliere tutte le attività e quindi fare clic su Esporta per aprire l'Esportazione guidata certificati.

    Screenshot che mostra la finestra Certificati con Tutte le attività ed Esporta selezionato.

  2. In Esportazione guidata certificati fare clic su Avanti per continuare.

  3. Selezionare Sì, esporta la chiave privata e quindi fare clic su Avanti.

    Screenshot che mostra Sì esportare la chiave privata selezionata.

  4. Nella pagina Formato file di esportazione lasciare selezionate le impostazioni predefinite. Verificare che l'opzione Se possibile, includi tutti i certificati nel percorso certificazione sia selezionata. Questa opzione consente anche l'esportazione delle informazioni del certificato radice necessarie per la corretta autenticazione del client. Senza tali informazioni, l'autenticazione del client ha esito negativo perché il client non ha il certificato radice attendibile. Quindi fare clic su Next.

    Screenshot per la pagina di formato file di esportazione.

  5. Nella pagina Sicurezza è necessario proteggere la chiave privata. Se si sceglie di usare una password, assicurarsi di registrare o ricordare quella impostata per questo certificato. Quindi fare clic su Next.

    Screenshot che mostra la password immessa e confermata.

  6. In File da esportare fare clic su Sfoglia e passare alla posizione in cui si vuole esportare il certificato. Per Nome file, assegnare un nome al file del certificato. Quindi fare clic su Next.

  7. Fare clic su Fine per esportare il certificato.

Installare un certificato client esportato

Ogni client che si connette tramite una connessione P2S richiede l'installazione locale di un certificato client. Per i passaggi per installare un certificato, vedere Installare i certificati client.

Passaggi successivi

Continuare con i passaggi rete WAN virtuale per le connessioni VPN utente.