Inhaltsverzeichnis:
Dieses Modul wird nicht offiziell unterstützt. Es wurde als Komfortmodul für die Generierung selbstsignierter Zertifikate entwickelt, um das Testen der HTTPS-Funktionalität zu vereinfachen.
Dieses Modul sollte nicht in Produktionsszenarien verwendet werden; Es dient ausschließlich der Erstellung selbstsignierter Zertifikate zu Testzwecken.
Dieses Modul ist als bequeme, plattformübergreifende Möglichkeit zum Generieren selbstsignierter Zertifikate sowohl in PowerShell Core als auch Windows PowerShell 5.1 konzipiert.
Da .NET Core bereits seine eigene plattformübergreifende Kryptografie-/Zertifikat-API einbettet, handelt es sich bei diesem Modul um ein natives PowerShell-Skriptmodul ohne binäre Abhängigkeiten.
Zu den Zielen dieses Moduls gehören:
X509HighlySpecificCryptoObject
-Zuweisungen und -ManipulationenVielleicht möchten Sie einen Blick auf einige andere Alternativen für die Generierung selbstsignierter Zertifikate werfen, die hier aufgeführt sind:
New-SelfSignedCertificate
-Cmdlet von Windows PowerShell aus dem PkiClient-Modul.
Es kann von PowerShell Core unter Windows mithilfe des WindowsCompatibility-Moduls wie folgt verwendet werden:
Install-Module WindowsCompatibility
Import-WinModule PKI
New-SelfSignedCertificate # args as needed
Dieses Modul ist jedoch nur unter Windows verfügbar – eine Linux-Version gibt es nicht.
Das globale Tool dotnet dotnet-dev-certs
, das zum Generieren selbstsignierter Zertifikate für die ASP.NET Core-Entwicklung entwickelt wurde.
Dies kann über die Dotnet-CLI installiert werden.
openssl
, das zwar plattformübergreifend funktioniert, im Vergleich zu einer PowerShell-nativen Option jedoch möglicherweise nicht vorteilhaft ist und ein PEM- statt eines PFX-Formats verwendet.
Um ein einfaches Zertifikat zu erstellen, funktioniert Folgendes:
> New-SelfSignedCertificate
Certificate written to C:UsersroholtDocumentsDevsandboxcertificate.pfx
Thumbprint Subject EnhancedKeyUsageList
---------- ------- --------------------
A51B016324B5D2F11340CDCC52004B8129C88D3B CN = localhost
Dadurch wird ein neues Zertifikat namens certificate.pfx
in Ihrem CWD für localhost
erstellt. Der Befehl selbst gibt ein X509Certificate2
-Objekt zurück, das das auf die Festplatte geschriebene Zertifikat beschreibt. Sie können dieses Objekt untersuchen, um seine Eigenschaften zu finden. Dieses Zertifikat verfügt über keine Schlüsselverwendungen, keine grundlegenden Einschränkungen, keine erweiterten Schlüsselverwendungen und eine Erweiterung für den Betreff-Identifikatorschlüssel.
Hinweis : Um diesen Befehl zu wiederholen, benötigen Sie den Parameter -Force
, um das alte Zertifikat zu überschreiben, das Sie zuvor generiert haben.
Der Befehl New-SelfSignedCertificate
ermöglicht die Angabe vollständiger Distinguished Names sowie einiger anderer Optionen:
> $password = ConvertTo-SecureString - Force - AsPlainText ' your password '
> $distinguishedName = @ {
CommonName = ' example.org '
Country = ' US '
StateOrProvince = ' Nebraska '
Locality = ' Omaha '
Organization = ' Umbrella Corporation '
OrganizationalUnit = ' Sales '
EmailAddress = ' [email protected] '
}
> $certificateParameters = $distinguishedName + @ {
OutCertPath = ' C:UsersyouDocumentscert.pfx '
StartDate = [ System.DateTimeOffset ]::Now
Duration = [ timespan ]::FromDays( 365 )
Passphrase = $password
CertificateFormat = ' Pfx ' # Values from [System.Security.Cryptography.X509Certificates.X509ContentType]
KeyLength = 4096
ForCertificateAuthority = $true
KeyUsage = ' DigitalSignature ' , ' KeyEncipherment ' # Values from [System.Security.Cryptography.X509Certificates.X509KeyUsageFlags]
EnhancedKeyUsage = ' ServerAuthentication ' , ' ClientAuthentication '
}
> New-SelfSignedCertificate @certificateParameters - Force
WARNING: Parameter ' EmailAddress ' is obsolete. The email name component is deprecated by the PKIX standard
Certificate written to C:UsersroholtDocumentsDevsandboxhere.pfx
Thumbprint Subject EnhancedKeyUsageList
---------- ------- --------------------
7445433CB2BB4948E12794A167C6725DC214AA84 CN = example.org , O.. . {Server Authentication , Client Authentication}
Das mit dem obigen Befehl erstellte Zertifikat weist die folgenden Eigenschaften auf:
Der Distinguished Name des Ausstellers und Betreffs ist auf Folgendes festgelegt:
CN=example.org, OU=Sales, O=Umbrella Corporation, L=Omaha, S=Nebraska, C=US, [email protected]
Passwortschutz (in diesem Fall mit dem Passwort 'Your password'
).
Ein einjähriger Gültigkeitszeitraum ab dem Erstellungszeitpunkt (mit gekürzten Millisekunden).
Ein 4096-Bit-RSA-Schlüssel.
Eine grundlegende Einschränkungserweiterung, bei CertificateAuthority
auf true
gesetzt ist.
Die angegebenen grundlegenden Schlüsselverwendungen für Digital Signature
und Key Encipherment
.
Die angegebenen erweiterten Schlüsselverwendungen Server Authentication
und Client Authentication
.
Der Befehl bietet auch den Parameter -AdditionalExtension
, der ein Array von System.Security.Cryptography.X509Certificates.X509Extension
zum Hinzufügen zu jedem generierten Zertifikat benötigt.
Das Modul unterstützt noch keine PEM-Dateien, die in der Linux-Welt stark genutzt werden. Obwohl es sich hierbei nicht um ein Zertifikatsformat an sich handelt, handelt es sich dabei um eine gängige Codierung von Zertifikaten, und wir sollten uns bemühen, sie in irgendeiner Weise zu unterstützen.
Derzeit ist dem Autor die native PEM-Unterstützung von PowerShell Core oder .NET Core nicht bekannt.
Die von diesem Modul generierten Zertifikatserweiterungen setzen derzeit alle das Feld Critical
auf false
um eine größere Flexibilität zu ermöglichen.
Es kann jedoch wünschenswert sein, einige oder alle davon als Critical
zu konfigurieren. Im Idealfall könnte dies geschehen, ohne die ohnehin schon große Anzahl von Parametern der Befehle zu überladen.
Derzeit werden für ServerAuthentication
und ClientAuthentication
erweiterte Schlüsselverwendungen unterstützt (auf einschränkende Weise, um die Verwendung zu vereinfachen).
Idealerweise könnten hierfür mehr Möglichkeiten zur Verfügung gestellt werden.
Das Modul könnte eine Reihe von Klassen bereitstellen, die X509Extension
s generieren, die häufig verwendete Zertifikaterweiterungen beschreiben.
Dieses Modul ist MIT-lizenziert. Siehe LICENSE.txt.