Selbstsignierte Zertifikate Sie sind eine einfache Möglichkeit, Tests und andere weniger wichtige Aufgaben durchzuführen. Selbstsignierte Zertifikate haben keine zuverlässige Zertifikatskette, um sie zu sichern, und werden von dem Benutzer signiert, der sie erstellt hat. Wenn Sie der Entität vertrauen, die das Zertifikat signiert hat, Sie können es wie ein ordnungsgemäß validiertes verwenden.
Wenn Sie ein selbstsigniertes Zertifikat erstellen müssen, Eine Möglichkeit, dies zu tun, ist mit PowerShell. In diesem Beitrag, Sie erfahren, wie Sie in PowerShell ein selbstsigniertes Zertifikat erstellen.
Erstellen eines selbstsignierten Zertifikats
So erstellen Sie ein selbstsigniertes Zertifikat mit PowerShell, du kannst den ... benutzen New-SelfSignedCertificate
Cmdlet. Dieses Cmdlet ist im Lieferumfang enthalten PKI
Modul.
Es gibt viele Möglichkeiten beim Erstellen von Zertifikaten. Gängige Arten von selbstsignierten Zertifikaten sind SSLServerAuthentication
(Standard für Cmdlet) Ja CodeSigning
. Zur selben Zeit, kann eine erstellen DocumentEncryptionCert
, das ist sehr nützlich zum Verschlüsseln von Dateien, und schließlich a Custom
Zertifikat, mit dem Sie viele benutzerdefinierte Optionen angeben können.
Lass uns weitermachen und ein erstellen SSLServerAuthentication
Zertifikat. Dies wird im Allgemeinen verwendet, um Websites mit SSL-Verschlüsselung zu schützen. Ein Beispiel dafür seht ihr unten. In diesem Beispiel, das Zertifikat wird in der Cert:LocalMachineMy Certificate Store
.
$Params = @{
"DnsName" = @("mywebsite.com","www.mywebsite.com")
"CertStoreLocation" = "Cert:LocalMachineMy"
"NotAfter" = (Get-Date).AddMonths(6)
"KeyAlgorithm" = "RSA"
"KeyLength" = "2048"
}
PS C:> New-SelfSignedCertificate @Params
PSParentPath: Microsoft.PowerShell.SecurityCertificate::LocalMachineMy
Thumbprint Subject EnhancedKeyUsageList
---------- ------- --------------------
4EFF6B1A0F61B4BG692C77F09889BD151EE8BB58 CN=mywebsite.com {Client Authentication, Server Authentication}
Wenn alles gut gelaufen ist, Sie sollten jetzt ein neu erstelltes Zertifikat haben! Sie werden feststellen, dass die Ausgabe den Betreff zurückgibt, aber der Betreff zeigt nur das erste Element an, das durch die DnsName
Parameter. Dies liegt daran, dass die zweite URL Teil der alternativen Themenliste wird.
* Beachten Sie, dass, wenn Sie versuchen, dies auszuführen, nicht als Administrator, Sie erhalten eine Fehlermeldung wie die folgende:
New-SelfSignedCertificate: CertEnroll::CX509Enrollment::_CreateRequest: Access denied. 0x80090010 (-2146893808 NTE_PERM)
Wie man bei ihm sieht Access denied
, Sie haben noch keine Berechtigung, dies auszuführen. *
Informationen finden Sie in unserem Zertifikat
Stellen wir sicher, dass das Zertifikat so erstellt wurde, wie wir es erwartet haben. So finden Sie Informationen zu einem bestimmten Zertifikat mit PowerShell, du kannst den ... benutzen Get-ChildItem
Cmdlet, Auf die gleiche Weise können Sie Dateien in einem Verzeichnis auflisten.
PS C:> Get-ChildItem -Path "Cert:LocalMachineMy" | Where-Object Thumbprint -EQ 4EFF6B1A0F61B4BF692C77F09889AD151EE8BB58 | Select-Object *
PSPath : Microsoft.PowerShell.SecurityCertificate::LocalMachineMy4EFF6B1A0F61B4BF692C77F09889AD151EE8BB58
58
PSParentPath : Microsoft.PowerShell.SecurityCertificate::LocalMachineMy
PSChildName : 4EFF6B1A0F61B4BF692C77F09889AD151EE8BB58
PSDrive : Cert
PSProvider : Microsoft.PowerShell.SecurityCertificate
PSIsContainer : False
EnhancedKeyUsageList : {Client Authentication (1.3.6.1.5.5.7.3.2), Server Authentication (1.3.6.1.5.5.7.3.1)}
DnsNameList : {mywebsite.com, www.mywebsite.com}
SendAsTrustedIssuer : False
EnrollmentPolicyEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty
EnrollmentServerEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty
PolicyId :
Archived : False
Extensions : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid,
System.Security.Cryptography.Oid, System.Security.Cryptography.Oid}
FriendlyName :
HasPrivateKey : True
PrivateKey : System.Security.Cryptography.RSACng
IssuerName : System.Security.Cryptography.X509Certificates.X500DistinguishedName
NotAfter : 6/22/2020 11:50:15 AM
NotBefore : 12/22/2019 10:40:20 AM
PublicKey : System.Security.Cryptography.X509Certificates.PublicKey
RawData : {48, 130, 3, 55…}
SerialNumber : 608C4D5E6B8D41B44ADDC6BD725FE264
SignatureAlgorithm : System.Security.Cryptography.Oid
SubjectName : System.Security.Cryptography.X509Certificates.X500DistinguishedName
Thumbprint : 4EFF6B1A0F61B4BF692C77F09889AD151EE8BB58
Version : 3
Handle : 2628421609632
Issuer : CN=mywebsite.com
Subject : CN=mywebsite.com
Hier gibt es viele tolle Informationen, aber es ist möglich, im zu beobachten DnsNameList
jetzt werden beide Seiten angezeigt. zur selben Zeit, das NotAfter
Das Datum ist korrekt ausgefüllt, um zu sein 6 Monate ab Erstellungsdatum.
Code-Signing-Zertifikat
Wenn Sie in PowerShell arbeiten, Treffen Durchsetzungsrichtlinien. Wenn Sie eine Ausführungsrichtlinie erstellt haben in AllSigned
dann müssten Sie jedes Skript, das auf Ihrem System ausgeführt wird, signieren. Erstellen Sie dazu ein Zertifikat, Es ist ziemlich einfach!
PS C:> New-SelfSignedCertificate -Type 'CodeSigningCert' -DnsName 'MyHost'
PSParentPath: Microsoft.PowerShell.SecurityCertificate::LocalMachineMY
Thumbprint Subject EnhancedKeyUsageList
---------- ------- --------------------
14D535EG834370293BA103159EB00876A79959D8 CN=MyHost Code Signing
Dokumentenschutzzertifikat
Das hast du vielleicht noch nicht viel früher gefunden, pero PowerShell, mit der Datenschutz-API, Sie können Dateien auf Ihrem System mit einem Dokumentenschutzzertifikat verschlüsseln. Verwendung der New-SelfSignedCertificate
Cmdlet, Wir können ganz einfach ein Zertifikat erstellen, um Ihre Dokumente zu verschlüsseln.
$Params = @{
"DnsName" = "MyHost"
"CertStoreLocation" = "Cert:CurrentUserMy"
"KeyUsage" = "KeyEncipherment","DataEncipherment","KeyAgreement"
"Type" = "DocumentEncryptionCert"
}
PS C:> New-SelfSignedCertificate @Params
Thumbprint Subject EnhancedKeyUsageList
---------- ------- --------------------
14D535EG934370293BA203159EB00876A79959D8 CN=MyHost Document Encryption
Mit dieser Art von Zertifikat, Jetzt können Sie das erstellte Zertifikat verwenden, um Inhalte mit PowerShell-Befehlen wie . zu verschlüsseln und zu entschlüsseln Protect-CMSMessage
Ja UnProtect-CMSMessage
.
Verschlüsseln / Das Entschlüsseln von Inhalten wie diesem ist praktisch, wenn Sie die verschlüsselten Daten weitergeben müssen, da Sie dieses Zertifikat später auf einem anderen System verwenden können, um die Daten zu entschlüsseln. Wenn Sie der Standard-Datenschutz-API vertrauen (DPAP) in Windows integriert, Sie können die Daten auf anderen Systemen oder für andere Benutzer nicht entschlüsseln.
Zusammenfassung
PowerShell macht das Erstellen selbstsignierter Zertifikate unglaublich einfach. Diese Zertifikate haben eine Vielzahl von Anwendungen, Aber ein wichtiger Hinweis ist, dass sie nur in Tests verwendet werden sollten. Sie verfügen nicht über eine gültige Vertrauenskette für Zertifikate, um Ihre selbstsignierten Zertifikate zu validieren.
Sehen Sie, wie schnell und einfach selbstsignierte Zertifikate erstellt werden können!, Sie können heute damit beginnen und alle benötigten Verbindungen oder Daten ordnungsgemäß verschlüsseln!