Generowanie i eksportowanie certyfikatów dla połączeń sieci VPN użytkownika przy użyciu programu PowerShell

Konfiguracje sieci VPN użytkownika (punkt-lokacja) można skonfigurować tak, aby wymagać uwierzytelnienia certyfikatów. W tym artykule pokazano, jak utworzyć certyfikat główny z podpisem własnym i wygenerować certyfikaty klienta przy użyciu programu PowerShell w Windows 10 (lub nowszym) lub Windows Server 2016 (lub nowszym).

Polecenia cmdlet programu PowerShell używane do generowania certyfikatów są częścią systemu operacyjnego i nie działają w innych wersjach systemu Windows. System operacyjny hosta jest używany tylko do generowania certyfikatów. Po wygenerowaniu certyfikatów można je przekazać lub zainstalować w dowolnym obsługiwanym systemie operacyjnym klienta.

Jeśli nie masz komputera spełniającego wymagania systemu operacyjnego, możesz użyć narzędzia MakeCert do wygenerowania certyfikatów. Certyfikaty generowane przy użyciu dowolnej metody można zainstalować w dowolnym obsługiwanym systemie operacyjnym klienta.

Tworzenie certyfikatu głównego z podpisem własnym

Użyj polecenia cmdlet New-SelfSignedCertificate, aby utworzyć certyfikat główny z podpisem własnym. Aby uzyskać dodatkowe informacje o parametrach, zobacz New-SelfSignedCertificate.

  1. Na komputerze z systemem Windows 10 lub nowszym lub Windows Server 2016 otwórz konsolę Windows PowerShell z podwyższonym poziomem uprawnień.

  2. Utwórz certyfikat główny z podpisem własnym. Poniższy przykład tworzy certyfikat główny z podpisem własnym o nazwie "P2SRootCert", który jest automatycznie instalowany w folderze "Certificates-Current User\Personal\Certificates". Certyfikat można wyświetlić, otwierając plik certmgr.msc lub zarządzaj certyfikatami użytkowników.

    Przed użyciem tego przykładu wprowadź wymagane modyfikacje. Parametr "NotAfter" jest opcjonalny. Domyślnie bez tego parametru certyfikat wygasa w ciągu 1 roku.

    $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. Pozostaw otwartą konsolę programu PowerShell i wykonaj następne kroki, aby wygenerować certyfikat klienta.

Generowanie certyfikatu klienta

Każdy komputer kliencki, który łączy się z siecią wirtualną przy użyciu połączenia punkt-lokacja, musi mieć zainstalowany certyfikat klienta. Wygenerujesz certyfikat klienta na podstawie certyfikatu głównego z podpisem własnym, a następnie wyeksportuj i zainstaluj certyfikat klienta. Jeśli certyfikat klienta nie jest zainstalowany, uwierzytelnianie nie powiedzie się.

Poniższe kroki przeprowadzą Cię przez proces generowania certyfikatu klienta na podstawie certyfikatu głównego z podpisem własnym. Możesz wygenerować wiele certyfikatów klienta z tego samego certyfikatu głównego. W przypadku generowania certyfikatów klienta przy użyciu poniższych kroków certyfikat klienta jest automatycznie instalowany na komputerze użytym do wygenerowania certyfikatu. Jeśli chcesz zainstalować certyfikat klienta na innym komputerze klienckim, wyeksportuj certyfikat.

W przykładach użyto polecenia cmdlet New-SelfSignedCertificate w celu wygenerowania certyfikatu klienta.

Przykład 1 — sesja konsoli programu PowerShell jest nadal otwarta

Użyj tego przykładu, jeśli konsola programu PowerShell nie została zamknięta po utworzeniu certyfikatu głównego z podpisem własnym. Ten przykład jest kontynuowany w poprzedniej sekcji i używa zadeklarowanej zmiennej "$cert". Jeśli konsola programu PowerShell została zamknięta po utworzeniu certyfikatu głównego z podpisem własnym lub tworzysz dodatkowe certyfikaty klienta w nowej sesji konsoli programu PowerShell, wykonaj kroki opisane w przykładzie 2.

Zmodyfikuj i uruchom przykład, aby wygenerować certyfikat klienta. Jeśli uruchomisz poniższy przykład bez modyfikowania go, wynikiem jest certyfikat klienta o nazwie "P2SChildCert". Jeśli chcesz nazwać certyfikat podrzędny czymś innym, zmodyfikuj wartość CN. Nie zmieniaj rozszerzenia TextExtension podczas uruchamiania tego przykładu. Wygenerowany certyfikat klienta jest automatycznie instalowany w folderze "Certyfikaty — bieżący użytkownik\osobiste\certyfikaty" na komputerze.


   $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

Przykład 2 — nowa sesja konsoli programu PowerShell

Jeśli tworzysz dodatkowe certyfikaty klienta lub nie używasz tej samej sesji programu PowerShell, która została użyta do utworzenia certyfikatu głównego z podpisem własnym, wykonaj następujące kroki:

  1. Zidentyfikuj certyfikat główny z podpisem własnym zainstalowany na komputerze. To polecenie cmdlet zwraca listę certyfikatów zainstalowanych na komputerze.

    Get-ChildItem -Path "Cert:\CurrentUser\My"
    
  2. Znajdź nazwę podmiotu z zwróconej listy, a następnie skopiuj odcisk palca znajdujący się obok niego do pliku tekstowego. W poniższym przykładzie istnieją dwa certyfikaty. Nazwa cn to nazwa certyfikatu głównego z podpisem własnym, z którego chcesz wygenerować certyfikat podrzędny. W tym przypadku "P2SRootCert".

    Thumbprint                                Subject
    ----------                                -------
    AED812AD883826FF76B4D1D5A77B3C08EFA79F3F  CN=P2SChildCert4
    7181AA8C1B4D34EEDB2F3D3BEC5839F3FE52D655  CN=P2SRootCert
    
  3. Zadeklaruj zmienną dla certyfikatu głównego przy użyciu odcisku palca z poprzedniego kroku. Zastąp ciąg THUMBPRINT odciskiem palca certyfikatu głównego, z którego chcesz wygenerować certyfikat podrzędny.

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

    Na przykład przy użyciu odcisku palca P2SRootCert w poprzednim kroku zmienna wygląda następująco:

    $cert = Get-ChildItem -Path "Cert:\CurrentUser\My\7181AA8C1B4D34EEDB2F3D3BEC5839F3FE52D655"
    
  4. Zmodyfikuj i uruchom przykład, aby wygenerować certyfikat klienta. Jeśli uruchomisz poniższy przykład bez modyfikowania go, wynikiem jest certyfikat klienta o nazwie "P2SChildCert". Jeśli chcesz nazwać certyfikat podrzędny czymś innym, zmodyfikuj wartość CN. Nie zmieniaj rozszerzenia TextExtension podczas uruchamiania tego przykładu. Wygenerowany certyfikat klienta jest automatycznie instalowany w folderze "Certyfikaty — bieżący użytkownik\osobiste\certyfikaty" na komputerze.

    $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
    

Eksportowanie klucza publicznego certyfikatu głównego (cer)

Po utworzeniu certyfikatu głównego z podpisem własnym wyeksportuj plik cer certyfikatu głównego (a nie klucz prywatny). Później przekażesz niezbędne dane certyfikatu zawarte w pliku na platformę Azure. Poniższe kroki ułatwiają wyeksportowanie pliku cer dla certyfikatu głównego z podpisem własnym i pobranie niezbędnych danych certyfikatu.

  1. Aby uzyskać plik cer certyfikatu, otwórz pozycję Zarządzaj certyfikatami użytkowników.

    Znajdź certyfikat główny z podpisem własnym, zazwyczaj w obszarze "Certyfikaty — bieżący użytkownik\Osobiste\Certyfikaty", a następnie kliknij prawym przyciskiem myszy. Kliknij pozycję Wszystkie zadania ->Eksportuj. Spowoduje to otwarcie Kreatora eksportu certyfikatów.

    Jeśli nie możesz znaleźć certyfikatu w obszarze "Bieżący użytkownik\Osobiste\Certyfikaty", być może przypadkowo otwarto "Certyfikaty — komputer lokalny", a nie "Certyfikaty — bieżący użytkownik".

    Zrzut ekranu przedstawiający okno Certyfikaty z wybraną pozycją Wszystkie zadania i Eksportuj.

  2. W kreatorze kliknij przycisk Dalej.

  3. Wybierz pozycję Nie eksportuj klucza prywatnego, a następnie kliknij pozycję Dalej.

    Zrzut ekranu przedstawia opcję Nie eksportuj klucza prywatnego.

  4. Na stronie Format pliku eksportu wybierz pozycję Certyfikat X.509 szyfrowany algorytmem Base-64 (.CER), a następnie kliknij pozycję Dalej.

    Zrzut ekranu przedstawiający eksportowanie zakodowanego algorytmem Base-64.

  5. W obszarze Plik do eksportuprzejdź do lokalizacji, do której chcesz wyeksportować certyfikat. Do pola Nazwa pliku wprowadź nazwę pliku certyfikatu. Następnie kliknij przycisk Dalej.

  6. Kliknij przycisk Zakończ, aby wyeksportować certyfikat.

  7. Zostanie wyświetlone potwierdzenie z informacją "Eksport zakończył się pomyślnie".

  8. Przejdź do lokalizacji, w której wyeksportowano certyfikat i otwórz go przy użyciu edytora tekstów, takiego jak Notatnik. W przypadku wyeksportowania certyfikatu w wymaganym formacie Base-64 X.509 (. Format CER— zobaczysz tekst podobny do poniższego przykładu. Sekcja wyróżniona na niebiesko zawiera informacje skopiowane i przekazane na platformę Azure.

    Zrzut ekranu przedstawia plik CER otwarty w Notatniku z wyróżnionymi danymi certyfikatu.

    Jeśli plik nie wygląda podobnie do przykładu, zazwyczaj oznacza to, że nie został wyeksportowany przy użyciu szyfrowanego algorytmem Base-64 X.509(. Format CER). Ponadto, jeśli używasz edytora tekstów innego niż Notatnik, pamiętaj, że niektóre edytory mogą wprowadzać niezamierzone formatowanie w tle. Może to powodować problemy podczas przekazywania tekstu z tego certyfikatu na platformę Azure.

Eksportowanie certyfikatu głównego z podpisem własnym i klucza prywatnego w celu jego przechowywania (opcjonalnie)

Możesz wyeksportować certyfikat główny z podpisem własnym i bezpiecznie zapisać go jako kopię zapasową. W razie potrzeby można go później zainstalować na innym komputerze i wygenerować więcej certyfikatów klienta. Aby wyeksportować certyfikat główny z podpisem własnym jako plik PFX, wybierz certyfikat główny i wykonaj te same kroki, jak opisano w temacie Eksportowanie certyfikatu klienta.

Eksportowanie certyfikatu klienta

Podczas generowania certyfikatu klienta jest on automatycznie instalowany na komputerze użytym do jego wygenerowania. Jeśli chcesz zainstalować certyfikat klienta na innym komputerze klienckim, należy najpierw wyeksportować certyfikat klienta.

  1. Aby wyeksportować certyfikat klienta, otwórz okno Zarządzaj certyfikatami użytkowników. Wygenerowane certyfikaty klienta są domyślnie zlokalizowane w folderze "Certyfikaty — bieżący użytkownik\Osobiste\Certyfikaty". Kliknij prawym przyciskiem myszy certyfikat klienta, który chcesz wyeksportować, kliknij wszystkie zadania, a następnie kliknij polecenie Eksportuj , aby otworzyć Kreatora eksportu certyfikatów.

    Zrzut ekranu przedstawia okno Certyfikaty z wybraną pozycją Wszystkie zadania i Eksportuj.

  2. W Kreatorze eksportu certyfikatów kliknij przycisk Dalej , aby kontynuować.

  3. Wybierz pozycję Tak, wyeksportuj klucz prywatny, a następnie kliknij przycisk Dalej.

    Zrzut ekranu przedstawiający wybranie pozycji Tak eksportu klucza prywatnego.

  4. Na stronie Format pliku eksportu pozostaw wybrane wartości domyślne. Upewnij się, że jest zaznaczona pozycja Jeśli jest to możliwe, dołącz wszystkie certyfikaty do ścieżki certyfikacji. To ustawienie dodatkowo eksportuje informacje o certyfikacie głównym, które są wymagane do pomyślnego uwierzytelnienia klienta. Bez niego uwierzytelnianie klienta kończy się niepowodzeniem, ponieważ klient nie ma zaufanego certyfikatu głównego. Następnie kliknij przycisk Dalej.

    Zrzut ekranu przedstawiający stronę formatu pliku eksportu.

  5. Na stronie Zabezpieczenia należy włączyć ochronę klucza prywatnego. Jeśli wybierzesz opcję użycia hasła, zapisz lub zapamiętaj hasło ustawione dla tego certyfikatu. Następnie kliknij przycisk Dalej.

    Zrzut ekranu przedstawia wprowadzone hasło i potwierdzenie.

  6. W obszarze Eksport pliku wybierz pozycję Przeglądaj, aby przejść do lokalizacji, do której chcesz wyeksportować certyfikat. Do pola Nazwa pliku wprowadź nazwę pliku certyfikatu. Następnie kliknij przycisk Dalej.

  7. Kliknij przycisk Zakończ, aby wyeksportować certyfikat.

Instalowanie wyeksportowanego certyfikatu klienta

Każdy klient łączący się za pośrednictwem połączenia punkt-lokacja wymaga zainstalowania certyfikatu klienta lokalnie. Aby uzyskać instrukcje instalacji certyfikatu, zobacz Instalowanie certyfikatów klienta.

Następne kroki

Kontynuuj kroki Virtual WAN dla połączeń sieci VPN użytkownika.