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 systemie 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.
Na komputerze z systemem Windows 10 lub nowszym lub Windows Server 2016 otwórz konsolę programu Windows PowerShell z podwyższonym poziomem uprawnień.
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ź wszelkie 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
Pozostaw otwartą konsolę programu PowerShell i wykonaj kolejne kroki, aby wygenerować certyfikat klienta.
Generowanie certyfikatu klienta
Każdy komputer kliencki łączący się z siecią wirtualną przy użyciu połączenia punkt-lokacja musi mieć zainstalowany certyfikat klienta. Wygenerujesz certyfikat klienta z 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ę.
W poniższych krokach przedstawiono proces generowania certyfikatu klienta z 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 z 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, 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:
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"
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
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"
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, 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 certyfikatu głównego .cer (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.
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. Wybierz pozycję Wszystkie zadania -> Eksportuj. Spowoduje to otwarcie Kreatora eksportu certyfikatów.
Jeśli nie możesz odnaleźć certyfikatu w obszarze "Bieżący użytkownik\Osobisty\Certyfikaty", być może przypadkowo otwarto certyfikaty — komputer lokalny, a nie certyfikaty — bieżący użytkownik.
W kreatorze wybierz pozycję Dalej.
Wybierz pozycję Nie, nie eksportuj klucza prywatnego, a następnie wybierz przycisk Dalej.
Na stronie Eksportuj format pliku wybierz pozycję X.509 zakodowany w formacie Base-64 (. CER)., a następnie wybierz przycisk Dalej.
W obszarze Plik do eksportu przejdź do lokalizacji, do której chcesz wyeksportować certyfikat. Do pola Nazwa pliku wprowadź nazwę pliku certyfikatu. Następnie wybierz Dalej.
Wybierz pozycję Zakończ , aby wyeksportować certyfikat.
Zostanie wyświetlone potwierdzenie informujące, że eksport zakończył się pomyślnie.
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) jest wyświetlany tekst podobny do poniższego przykładu. Sekcja wyróżniona na niebiesko zawiera informacje skopiowane i przekazane na platformę Azure.
Jeśli plik nie wygląda podobnie do przykładu, zazwyczaj oznacza to, że nie został wyeksportowany przy użyciu zakodowanego w formacie 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 zapisać go bezpiecznie jako kopię zapasową. Jeśli jest to konieczne, możesz później zainstalować go 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 artykule Eksportowanie certyfikatu klienta.
Eksportowanie certyfikatu klienta
Po wygenerowaniu certyfikatu klienta jest on automatycznie instalowany na komputerze, który został użyty do jego wygenerowania. Jeśli chcesz zainstalować certyfikat klienta na innym komputerze klienckim, musisz najpierw wyeksportować certyfikat klienta.
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.
W Kreatorze eksportu certyfikatów kliknij przycisk Dalej , aby kontynuować.
Wybierz pozycję Tak, wyeksportuj klucz prywatny, a następnie kliknij przycisk Dalej.
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.
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.
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.
Kliknij przycisk Zakończ, aby wyeksportować certyfikat.
Linux
Aby uzyskać instrukcje dotyczące systemu Linux, zobacz Generowanie certyfikatów z podpisem własnym — Linux — OpenSSL lub Generowanie certyfikatów z podpisem własnym — Linux — strongSwan.
Instalowanie wyeksportowanego certyfikatu klienta
Każdy klient, który łączy się za pośrednictwem połączenia punkt-lokacja, wymaga, aby certyfikat klienta był instalowany lokalnie. Aby uzyskać instrukcje instalacji certyfikatu, zobacz Instalowanie certyfikatów klienta.
Następne kroki
Kontynuuj kroki usługi Virtual WAN dla połączeń sieci VPN użytkownika.