Instrukcje: Tworzenie certyfikatów tymczasowych do używania w trakcie opracowywania
Podczas tworzenia bezpiecznej usługi lub klienta przy użyciu programu Windows Communication Foundation (WCF) często konieczne jest podanie certyfikatu X.509 do użycia jako poświadczenia. Certyfikat jest zazwyczaj częścią łańcucha certyfikatów z urzędem głównym znajdującym się w magazynie zaufanych głównych urzędów certyfikacji komputera. Posiadanie łańcucha certyfikatów umożliwia określanie zakresu zestawu certyfikatów, w którym zazwyczaj główny urząd pochodzi z organizacji lub jednostki biznesowej. Aby emulować to w czasie programowania, można utworzyć dwa certyfikaty, aby spełnić wymagania dotyczące zabezpieczeń. Pierwszy to certyfikat z podpisem własnym, który jest umieszczany w magazynie zaufanych głównych urzędów certyfikacji, a drugi certyfikat jest tworzony na podstawie pierwszego i jest umieszczany w magazynie osobistym lokalizacji Komputera lokalnego lub w magazynie osobistym bieżącego użytkownika. W tym temacie przedstawiono kroki tworzenia tych dwóch certyfikatów przy użyciu polecenia cmdlet New-SelfSignedCertificate programu PowerShell.
Ważne
Certyfikaty generowane przez polecenie cmdlet New-SelfSignedCertificate są udostępniane tylko do celów testowych. Podczas wdrażania usługi lub klienta należy użyć odpowiedniego certyfikatu dostarczonego przez urząd certyfikacji. Może to być serwer certyfikatów systemu Windows Server w organizacji lub innej firmy.
Domyślnie polecenie cmdlet New-SelfSignedCertificate tworzy certyfikaty z podpisem własnym, a te certyfikaty są niezabezpieczone. Umieszczenie certyfikatów z podpisem własnym w magazynie Zaufanych głównych urzędów certyfikacji umożliwia utworzenie środowiska deweloperskiego, które ściślej symuluje środowisko wdrażania.
Aby uzyskać więcej informacji na temat tworzenia i używania certyfikatów, zobacz Praca z certyfikatami. Aby uzyskać więcej informacji na temat używania certyfikatu jako poświadczenia, zobacz Zabezpieczanie usług i klientów. Aby zapoznać się z samouczkiem dotyczącym korzystania z technologii Microsoft Authenticode, zobacz Authenticode Overviews and Tutorials (Omówienie i samouczki dotyczące aplikacji Authenticode).
Aby utworzyć certyfikat urzędu głównego z podpisem własnym i wyeksportować klucz prywatny
Następujące polecenie tworzy certyfikat z podpisem własnym o nazwie podmiotu "RootCA" w magazynie Osobistym bieżącego użytkownika.
$rootCert = New-SelfSignedCertificate -CertStoreLocation Cert:\CurrentUser\My -DnsName "RootCA" -TextExtension @("2.5.29.19={text}CA=true") -KeyUsage CertSign,CrlSign,DigitalSignature
Musimy wyeksportować certyfikat do pliku PFX, aby można go było zaimportować do lokalizacji potrzebnej w późniejszym kroku. Podczas eksportowania certyfikatu z kluczem prywatnym należy je chronić. Zapisujemy hasło w elemecie SecureString
i używamy polecenia cmdlet Export-PfxCertificate , aby wyeksportować certyfikat ze skojarzonym kluczem prywatnym do pliku PFX. Zapisujemy również tylko certyfikat publiczny w pliku CRT przy użyciu polecenia cmdlet Export-Certificate .
[System.Security.SecureString]$rootCertPassword = ConvertTo-SecureString -String "password" -Force -AsPlainText
[String]$rootCertPath = Join-Path -Path 'cert:\CurrentUser\My\' -ChildPath "$($rootCert.Thumbprint)"
Export-PfxCertificate -Cert $rootCertPath -FilePath 'RootCA.pfx' -Password $rootCertPassword
Export-Certificate -Cert $rootCertPath -FilePath 'RootCA.crt'
Aby utworzyć nowy certyfikat podpisany przez certyfikat urzędu głównego
Następujące polecenie tworzy certyfikat podpisany przez RootCA
obiekt o nazwie podmiotu "SignedByRootCA" przy użyciu klucza prywatnego wystawcy.
$testCert = New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "SignedByRootCA" -KeyExportPolicy Exportable -KeyLength 2048 -KeyUsage DigitalSignature,KeyEncipherment -Signer $rootCert
Podobnie zapisujemy podpisany certyfikat z kluczem prywatnym w pliku PFX i tylko klucz publiczny w pliku CRT.
[String]$testCertPath = Join-Path -Path 'cert:\LocalMachine\My\' -ChildPath "$($testCert.Thumbprint)"
Export-PfxCertificate -Cert $testCertPath -FilePath testcert.pfx -Password $rootCertPassword
Export-Certificate -Cert $testCertPath -FilePath testcert.crt
Instalowanie certyfikatu w magazynie zaufanych głównych urzędów certyfikacji
Po utworzeniu certyfikatu z podpisem własnym można go zainstalować w magazynie Zaufanych głównych urzędów certyfikacji. Wszystkie certyfikaty podpisane przy użyciu certyfikatu w tym momencie są zaufane przez komputer. Z tego powodu usuń certyfikat z magazynu, gdy tylko go nie potrzebujesz. Po usunięciu tego certyfikatu urzędu głównego wszystkie inne certyfikaty podpisane za jego pomocą staną się nieautoryzowane. Certyfikaty urzędów głównych to po prostu mechanizm, w którym grupa certyfikatów może być w razie potrzeby ograniczona. Na przykład w aplikacjach równorzędnych zazwyczaj nie ma potrzeby uwierzytelniania głównego, ponieważ po prostu ufasz tożsamości osoby za pomocą dostarczonego certyfikatu.
Aby zainstalować certyfikat z podpisem własnym w zaufanych głównych urzędach certyfikacji
Otwórz przystawkę certyfikatu. Aby uzyskać więcej informacji, zobacz How to: View Certificates with the MMC Snap-in (Instrukcje: wyświetlanie certyfikatów za pomocą przystawki MMC).
Otwórz folder do przechowywania certyfikatu — komputera lokalnego lub bieżącego użytkownika.
Otwórz folder Zaufane główne urzędy certyfikacji.
Kliknij prawym przyciskiem myszy folder Certyfikaty , a następnie kliknij pozycję Wszystkie zadania, a następnie kliknij przycisk Importuj.
Postępuj zgodnie z instrukcjami kreatora na ekranie, aby zaimportować plik RootCA.pfx do magazynu.
Używanie certyfikatów z usługą WCF
Po skonfigurowaniu certyfikatów tymczasowych można ich użyć do tworzenia rozwiązań WCF, które określają certyfikaty jako typ poświadczeń klienta. Na przykład następująca konfiguracja XML określa zabezpieczenia komunikatów i certyfikat jako typ poświadczeń klienta.
Aby określić certyfikat jako typ poświadczeń klienta
W pliku konfiguracji usługi użyj następującego kodu XML, aby ustawić tryb zabezpieczeń na komunikat, a typ poświadczeń klienta na certyfikat.
<bindings> <wsHttpBinding> <binding name="CertificateForClient"> <security> <message clientCredentialType="Certificate" /> </security> </binding> </wsHttpBinding> </bindings>
W pliku konfiguracji klienta użyj następującego kodu XML, aby określić, że certyfikat znajduje się w magazynie użytkownika i można go znaleźć, wyszukując pole SubjectName dla wartości "CohoWinery".
<behaviors> <endpointBehaviors> <behavior name="CertForClient"> <clientCredentials> <clientCertificate findValue="CohoWinery" x509FindType="FindBySubjectName" /> </clientCredentials> </behavior> </endpointBehaviors> </behaviors>
Aby uzyskać więcej informacji na temat używania certyfikatów w programie WCF, zobacz Praca z certyfikatami.
zabezpieczenia .NET Framework
Pamiętaj, aby usunąć wszystkie tymczasowe certyfikaty urzędu głównego z zaufanych głównych urzędów certyfikacji i folderów osobistych , klikając prawym przyciskiem myszy certyfikat, a następnie klikając polecenie Usuń.