Generieren und Exportieren von Zertifikaten für Benutzer-VPN-Verbindungen mithilfe von PowerShell

Benutzer-VPN-Konfigurationen (Point-to-Site) können so konfiguriert werden, dass für die Authentifizierung Zertifikate benötigt werden. In diesem Artikel wird beschrieben, wie Sie mithilfe von PowerShell unter Windows 10 oder neuer bzw. Windows Server 2016 (oder höher) ein selbstsigniertes Stammzertifikat erstellen und Clientzertifikate generieren.

Die zum Generieren von Zertifikaten verwendeten PowerShell-Cmdlets sind Teil des Betriebssystems und können in anderen Versionen von Windows nicht ausgeführt werden. Das Hostbetriebssystem wird nur zum Generieren der Zertifikate verwendet. Nachdem die Zertifikate generiert wurden, können sie hochgeladen oder unter jedem unterstützten Clientbetriebssystem installiert werden.

Wenn Sie keinen Computer haben, der die Betriebssystemanforderungen erfüllt, können Sie zum Generieren der Zertifikate MakeCert verwenden. Unabhängig davon, mit welcher Methode sie generiert wurden, können die Zertifikate unter jedem unterstützten Clientbetriebssystem installiert werden.

Erstellen eines selbstsignierten Stammzertifikats

Verwenden Sie das Cmdlet „New-SelfSignedCertificate“, um ein selbstsigniertes Stammzertifikat zu erstellen. Zusätzliche Informationen zu den Parametern finden Sie in der Beschreibung zu New-SelfSignedCertificate.

  1. Öffne auf einem Computer unter Windows 10 oder neuer bzw. Windows Server 2016 eine Windows PowerShell-Konsole mit erhöhten Rechten.

  2. Erstellen Sie ein selbstsigniertes Stammzertifikat. Das folgende Beispiel erstellt ein selbstsigniertes Stammzertifikat mit dem Namen „P2SRootCert“, das automatisch in „Certificates-Current User\Personal\Certificates“ installiert wird. Sie können das Zertifikat anzeigen, indem Sie certmgr.msc öffnen oder die Option Benutzerzertifikate verwalten auswählen.

    Nehmen Sie alle erforderlichen Änderungen vor, bevor Sie dieses Beispiel verwenden. Der Parameter „NotAfter“ ist optional. Ohne diesen Parameter läuft das Zertifikat standardmäßig nach 1 Jahr ab.

    $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. Lassen Sie die PowerShell-Konsole geöffnet, und fahren Sie mit den nächsten Schritten fort, um ein Clientzertifikat zu generieren.

Generieren eines Clientzertifikats

Auf jedem Clientcomputer, der sich über eine Point-to-Site-Verbindung mit einem VNet verbindet, muss ein Clientzertifikat installiert sein. Sie generieren ein Clientzertifikat aus dem selbstsignierten Stammzertifikat und exportieren und installieren es anschließend. Wenn das Clientzertifikat nicht installiert ist, tritt bei der Authentifizierung ein Fehler auf.

Die folgenden Schritte führen Sie durch das Generieren eines Clientzertifikats aus einem selbstsignierten Stammzertifikat. Sie können mehrere Clientzertifikate aus demselben Stammzertifikat generieren. Wenn Sie mithilfe der folgenden Schritte Clientzertifikate generieren, wird das Clientzertifikat automatisch auf dem Computer installiert, mit dem Sie das Zertifikat generiert haben. Wenn Sie ein Clientzertifikat auf einem anderen Clientcomputer installieren möchten, exportieren Sie das Zertifikat.

In den Beispielen wird das Cmdlet New-SelfSignedCertificate verwendet, um ein Clientzertifikat zu generieren.

Beispiel 1: PowerShell-Konsolensitzung weiterhin geöffnet.

Verwenden Sie dieses Beispiel, wenn Sie Ihre PowerShell-Konsole nach der Erstellung des selbstsignierten Stammzertifikats nicht geschlossen haben. Dieses Beispiel wird aus dem vorherigen Abschnitt fortgesetzt und verwendet die deklarierte Variable „$cert“. Wenn Sie die PowerShell-Konsole nach dem Erstellen des selbstsignierten Stammzertifikats geschlossen haben oder zusätzliche Clientzertifikate in einer neuen PowerShell-Konsolensitzung erstellen, verwenden Sie die Schritte in Beispiel 2.

Ändern Sie das Beispiel, und führen Sie es aus, um ein Clientzertifikat zu generieren. Wenn Sie das folgende Beispiel ausführen, ohne es zu ändern, ist das Ergebnis ein Clientzertifikat mit dem Namen P2SChildCert. Wenn Sie dem untergeordneten Zertifikat einen anderen Namen geben möchten, ändern Sie den CN-Wert. Ändern Sie die TextExtension nicht, wenn Sie dieses Beispiel ausführen. Das Clientzertifikat, das Sie generieren, wird auf Ihrem Computer automatisch in „Certificates - Current User\Personal\Certificate“ installiert.


   $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

Beispiel 2: neue PowerShell-Konsolensitzung

Wenn Sie zusätzliche Clientzertifikate erstellen oder nicht dieselbe PowerShell-Sitzung verwenden, in der Sie Ihr selbstsigniertes Stammzertifikat erstellt haben, führen Sie folgende Schritte aus:

  1. Identifizieren Sie das selbstsignierte Stammzertifikat, das auf dem Computer installiert ist. Dieses Cmdlet gibt eine Liste von Zertifikaten zurück, die auf Ihrem Computer installiert sind.

    Get-ChildItem -Path "Cert:\CurrentUser\My"
    
  2. Suchen Sie den Antragstellernamen in der zurückgegebenen Liste, und kopieren Sie den Fingerabdruck, der sich daneben in einer Textdatei befindet. Im folgenden Beispiel sind zwei Zertifikate vorhanden. Der CN-Name ist der Name des selbstsignierten Stammzertifikats, aus dem Sie ein untergeordnetes Zertifikat generieren möchten. In diesem Fall P2SRootCert.

    Thumbprint                                Subject
    ----------                                -------
    AED812AD883826FF76B4D1D5A77B3C08EFA79F3F  CN=P2SChildCert4
    7181AA8C1B4D34EEDB2F3D3BEC5839F3FE52D655  CN=P2SRootCert
    
  3. Deklarieren Sie eine Variable für das Stammzertifikat mit dem Fingerabdruck aus dem vorherigen Schritt. Ersetzen Sie THUMBPRINT mit dem Namen des Stammzertifikats, aus dem Sie ein untergeordnetes Zertifikat generieren möchten.

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

    Bei Verwendung des Fingerabdrucks für P2SRootCert im vorherigen Schritt sieht die Variable z.B. wie folgt aus:

    $cert = Get-ChildItem -Path "Cert:\CurrentUser\My\7181AA8C1B4D34EEDB2F3D3BEC5839F3FE52D655"
    
  4. Ändern Sie das Beispiel, und führen Sie es aus, um ein Clientzertifikat zu generieren. Wenn Sie das folgende Beispiel ausführen, ohne es zu ändern, ist das Ergebnis ein Clientzertifikat mit dem Namen P2SChildCert. Wenn Sie dem untergeordneten Zertifikat einen anderen Namen geben möchten, ändern Sie den CN-Wert. Ändern Sie die TextExtension nicht, wenn Sie dieses Beispiel ausführen. Das Clientzertifikat, das Sie generieren, wird auf Ihrem Computer automatisch in „Certificates - Current User\Personal\Certificate“ installiert.

    $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
    

Exportieren des öffentlichen Schlüssels des Stammzertifikats (CER-Datei)

Nachdem Sie ein selbstsigniertes Stammzertifikat erstellt haben, exportieren Sie die CER-Datei des Stammzertifikats (nicht den privaten Schlüssel). Später laden Sie die in der Datei enthaltenen erforderlichen Zertifikatdaten in Azure hoch. Mit den folgenden Schritten können Sie die CER-Datei für Ihr selbstsigniertes Stammzertifikat exportieren und die erforderlichen Zertifikatdaten abrufen.

  1. Um die CER-Datei des Zertifikats abzurufen, öffnen Sie Benutzerzertifikate verwalten.

    Suchen Sie das selbstsignierte Stammzertifikat (in der Regel in Zertifikate – Aktueller Benutzer\Eigene Zertifikate\Zertifikate), und klicken Sie mit der rechten Maustaste darauf. Wählen Sie Alle Vorgänge ->Export aus. Dadurch wird der Zertifikatexport-Assistentgeöffnet.

    Wenn Sie das Zertifikat unter „Aktueller Benutzer\Eigene Zertifikate\Zertifikate“ nicht finden, haben Sie unter Umständen versehentlich Zertifikate – Lokaler Benutzer anstelle von Zertifikate – Aktueller Benutzer geöffnet.

    Screenshot: Fenster „Zertifikate“ mit ausgewählten Optionen „Alle Aufgaben“ und „Exportieren“

  2. Wählen Sie im Assistenten Weiter aus.

  3. Wählen Sie Nein, privaten Schlüssel nicht exportieren und dann Weiter aus.

    Screenshot: Option „Nein, privaten Schlüssel nicht exportieren“

  4. Wählen Sie auf der Seite Dateiformat für den Export die Option Base-64-codiert X.509 (.CER) aus, und wählen Sie dann Weiter.

    Screenshot: Export mit Base64-Verschlüsselung

  5. Wählen Sie unter Zu exportierende Datei die Option Durchsuchen aus, um zu dem Speicherort zu wechseln, an den das Zertifikat exportiert werden soll. Geben Sie unter Dateinameeinen Namen für die Zertifikatdatei ein. Wählen Sie anschließend Weiter aus.

  6. Wählen Sie Fertig stellen aus, um das Zertifikat zu exportieren.

  7. Sie erhalten eine Bestätigung, dass der Export erfolgreich war.

  8. Wechseln Sie zu dem Speicherort, an den Sie das Zertifikat exportiert haben, und öffnen Sie es mit einem Text-Editor (z. B. in Editor). Wenn Sie das Zertifikat im erforderlichen Format „Base-64-codiert X.509 (.CER)“ exportiert haben, sehen Sie einen Text ähnlich dem folgenden Beispiel. Der in Blau hervorgehobene Abschnitt enthält die Informationen, die Sie kopieren und in Azure hochladen.

    Screenshot: In Editor geöffnete CER-Datei mit hervorgehobenen Zertifikatdaten

    Wenn Ihre Datei dem Beispiel nicht ähnelt, bedeutet dies in der Regel, dass Sie die Datei nicht mit dem Format „Base-64-codiert X.509 (.CER)“ exportiert haben. Wenn Sie darüber hinaus einen anderen Text-Editor als Editor verwenden, sollten Sie beachten, dass einige Editoren unbeabsichtigte Formatierung im Hintergrund einführen können. Dies kann Probleme beim Hochladen des Texts aus diesem Zertifikat in Azure verursachen.

Exportieren des selbstsignierten Stammzertifikats und des privaten Schlüssels zum Speichern (optional)

Möglicherweise möchten Sie das selbstsignierte Stammzertifikat exportieren und als Sicherung sicher speichern. Bei Bedarf können Sie es später auf einem anderen Computer installieren und weitere Clientzertifikate generieren. Um das selbstsignierte Stammzertifikat als PFX-Datei zu exportieren, wählen Sie das Stammzertifikat aus, und verwenden Sie die gleichen Schritte wie zum Exportieren eines Clientzertifikats.

Exportieren des Clientzertifikats

Wenn Sie ein Clientzertifikat generieren, wird es automatisch auf dem Computer installiert, mit dem Sie es generiert haben. Wenn Sie das Clientzertifikat auf einem anderen Clientcomputer installieren möchten, müssen Sie das Clientzertifikat zunächst exportieren.

  1. Wählen Sie zum Exportieren eines Clientzertifikats die Option Benutzerzertifikate verwalten aus. Die Clientzertifikate, die Sie generiert haben, befinden sich standardmäßig in „Certificates - Current User\Personal\Certificates“. Klicken Sie mit der rechten Maustaste auf das Clientzertifikat, das Sie exportieren möchten, und klicken Sie dann auf Alle Aufgaben und anschließend auf Exportieren, um den Zertifikatexport-Assistenten zu öffnen.

    Screenshot: Fenster „Zertifikate“ mit ausgewählten Optionen „Alle Aufgaben“ und „Exportieren“

  2. Klicken Sie im Zertifikatexport-Assistenten auf Weiter, um den Vorgang fortzusetzen.

  3. Wählen Sie Ja, privaten Schlüssel exportieren aus, und klicken Sie dann auf Weiter.

    Screenshot: Ausgewählte Option „Ja, privaten Schlüssel exportieren“

  4. Übernehmen Sie auf der Seite Format der zu exportierenden Datei die Standardwerte. Stellen Sie sicher, dass die Option Wenn möglich, alle Zertifikate im Zertifizierungspfad einbeziehen aktiviert ist. Mit dieser Einstellung werden auch die Stammzertifikatinformationen exportiert, die für eine erfolgreiche Clientauthentifizierung erforderlich sind. Andernfalls tritt bei der Clientauthentifizierung ein Fehler auf, da der Client nicht über das vertrauenswürdige Stammzertifikat verfügt. Klicken Sie auf Weiter.

    Screenshot: Seite zur Auswahl des Formats der Exportdatei

  5. Auf der Seite Sicherheit müssen Sie den privaten Schlüssel schützen. Wenn Sie ein Kennwort verwenden möchten, müssen Sie sich das für dieses Zertifikat festgelegte Kennwort unbedingt merken oder notieren. Klicken Sie auf Weiter.

    Screenshot: Eingabe und Bestätigung des Kennworts

  6. Wählen Sie unter Zu exportierende Datei die Option Durchsuchen aus, um zu dem Speicherort zu wechseln, an den das Zertifikat exportiert werden soll. Geben Sie unter Dateinameeinen Namen für die Zertifikatdatei ein. Klicken Sie auf Weiter.

  7. Klicken Sie auf Fertig stellen , um das Zertifikat zu exportieren.

Linux

Informationen zu Linux-Schritten finden Sie unter Generieren von selbstsignierten Zertifikaten – Linux – OpenSSL oder Generieren von selbstsignierten Zertifikaten – Linux – strongSwan.

Installieren eines exportierten Clientzertifikats

Auf einem Client, der Verbindungen über eine P2S-Verbindung herstellt, muss lokal ein Clientzertifikat installiert sein. Schritte zum Installieren eines Zertifikats finden Sie unter Installieren von Clientzertifikaten.

Nächste Schritte

Weiter mit den Virtual WAN-Schritten für VPN-Verbindungen von Benutzern.