Het Maken van een Zelf-Ondertekend Certificaat met PowerShell

Zelf-ondertekende certificaten zijn een gemakkelijke manier om testen uit te voeren en andere minder belangrijke taken. Zelf-ondertekende certificaten niet hebben van een betrouwbare keten van certificaten back-up en ondertekend door de gebruiker die het heeft gemaakt. Als u vertrouwen op de entiteit die het certificaat ondertekend heeft dan kunt u deze gebruiken als een goed gevalideerd één.

Als u maken van een zelf-ondertekend certificaat, een manier waarop je kan doen is met PowerShell. In dit artikel ga je leren hoe te maken van een zelf-ondertekend certificaat in PowerShell.

Het maken van een Zelf-Ondertekend Certificaat

Maken van een zelf-ondertekend certificaat met PowerShell kunt u gebruik maken van de Nieuwe-SelfSignedCertificate cmdlet. Dit cmdlet is opgenomen in de PKI-module.

Er zijn vele opties als het gaat om het maken van certificaten. Common zelf-ondertekend certificaat types zijn SSLServerAuthentication (standaard voor de cmdlet) en CodeSigning. Ook kunt u een DocumentEncryptionCert, die is zeer nuttig voor het versleutelen van bestanden, en tot slot een Custom certificaat waarmee u kunt opgeven vele opties.

Laten we verder gaan en maken een normale SSLServerAuthentication certificaat. Dit is er een die meestal wordt gebruikt voor het beveiligen van websites met SSL-encryptie. U kunt een voorbeeld van hieronder. In dit voorbeeld is het certificaat wordt opgeslagen in de Cert:LocalMachineMijn Certificate Store.

$Params = @{
“DnsName” = @(“mywebsite.com”,”www.mywebsite.com”)
“CertStoreLocation” = “Cert:LocalMachineMijn”
“NotAfter” = (Get-Date).AddMonths(6)
“KeyAlgorithm” = “RSA”
“Sleutellengte” = “2048”
}

PS C:> Nieuw-SelfSignedCertificate @Params

PSParentPath: Microsoft.PowerShell.SecurityCertificate::LocalMachineMijn

Vingerafdruk Onderwerp EnhancedKeyUsageList
———- ——- ——————–
4EFF6B1A0F61B4BG692C77F09889BD151EE8BB58 CN=mywebsite.com {Client-Authenticatie, Verificatie van de Server}

Als alles goed is verlopen, u moet nu een nieuw aangemaakte certificaat! U zult opmerken dat de uitgang geeft het onderwerp, maar het onderwerp geeft alleen de eerste post doorgegeven via de DnsName parameter. Dit komt omdat in de tweede URL wordt onderdeel van het onderwerp alternatieve lijst.

*Opmerking als u probeert uit te voeren, niet als Beheerder, kunt u een foutmelding krijgen zoals hieronder:

Nieuw-SelfSignedCertificate: CertEnroll::CX509Enrollment::_CreateRequest: Toegang geweigerd. 0x80090010 (-2146893808 NTE_PERM)

Als je kunt vertellen met de Toegang geweigerd, hoeft u nog niet de toestemming voor hebt om deze mogelijkheid.*

Het vinden van Informatie over ons Certificaat

Laten we ervoor zorgen dat het certificaat is gemaakt op de manier die wij verwachten. Om informatie te vinden over een bepaald certificaat met PowerShell kunt u gebruik maken van het Get-ChildItem cmdlet, kunt u net als lijst met bestanden in een map.

PS C:> Get-ChildItem -Pad “Cert:LocalMachineMijn” | Waar-Object Vingerafdruk -EQ 4EFF6B1A0F61B4BF692C77F09889AD151EE8BB58 | Select-Object *

PSPath : Microsoft.PowerShell.SecurityCertificate::LocalMachineMijn4EFF6B1A0F61B4BF692C77F09889AD151EE8BB58
58
PSParentPath : Microsoft.PowerShell.SecurityCertificate::LocalMachineMijn
PSChildName : 4EFF6B1A0F61B4BF692C77F09889AD151EE8BB58
PSDrive : Cert
PSProvider : Microsoft.PowerShell.SecurityCertificaat
PSIsContainer : False
EnhancedKeyUsageList : {Verificatie Van De Client (1.3.6.1.5.5.7.3.2), De Verificatie Van De Server (1.3.6.1.5.5.7.3.1)}
DnsNameList : {mywebsite.com, www.mywebsite.com}
SendAsTrustedIssuer : False
EnrollmentPolicyEndPoint : Microsoft.CertificateServices.Commando ‘ s.EnrollmentEndPointProperty
EnrollmentServerEndPoint : Microsoft.CertificateServices.Commando ‘ s.EnrollmentEndPointProperty
PolicyId :
Gearchiveerde : False
Extensies : {Systeem.Veiligheid.Cryptografie.Oid, Systeem.Veiligheid.Cryptografie.Oid,
Systeem.Veiligheid.Cryptografie.Oid, Systeem.Veiligheid.Cryptografie.Oid}
FriendlyName :
HasPrivateKey : True
PrivateKey : Systeem.Veiligheid.Cryptografie.RSACng
IssuerName : Systeem.Veiligheid.Cryptografie.X509Certificates.X500DistinguishedName
NotAfter : 6/22/2020 11:50:15 AM
NotBefore : 12/22/2019 10:40:20 AM
PublicKey : Systeem.Veiligheid.Cryptografie.X509Certificates.PublicKey
RawData : {48, 130, 3, 55…}
SerialNumber : 608C4D5E6B8D41B44ADDC6BD725FE264
SignatureAlgorithm : Systeem.Veiligheid.Cryptografie.Oid
SubjectName : Systeem.Veiligheid.Cryptografie.X509Certificates.X500DistinguishedName
Vingerafdruk : 4EFF6B1A0F61B4BF692C77F09889AD151EE8BB58
Versie : 3
Handvat : 2628421609632
Uitgever : CN=mywebsite.com
Onderwerp : CN=mywebsite.com

Er is veel goede informatie hier, maar je ziet in de DnsNameList dat zowel van de sites zijn nu te zien. Daarnaast is de NotAfter datum is correct gevuld te worden met 6 maanden vanaf de datum van de schepping.

Certificaat Voor Ondertekenen Van Code

Als u werkt in PowerShell, weet u over de uitvoering van het beleid. Als u een uitvoering beleid te AllSigned dan zou je moeten ondertekenen elk script dat draait op uw systeem. Te maken van een certificaat om dit te doen, het is vrij simpel!

PS C:> Nieuw-SelfSignedCertificate -Type ‘CodeSigningCert’ -DnsName ‘MyHost’

PSParentPath: Microsoft.PowerShell.SecurityCertificate::LocalMachineMIJN

Vingerafdruk Onderwerp EnhancedKeyUsageList
———- ——- ——————–
14D535EG834370293BA103159EB00876A79959D8 CN=MyHost Code Signing

Document Beveiliging Certificaat

Je mag niet tegengekomen dit veel voor, maar PowerShell, met de Data Protection API, kunt versleutelen van bestanden op uw systeem met behulp van een Document Bescherming van het Certificaat. Met de Nieuwe-SelfSignedCertificate cmdlet kunnen we gemakkelijk een certificaat voor het coderen van uw documenten.

$Params = @{
“DnsName” = “MyHost”
“CertStoreLocation” = “Cert:CurrentUserMijn”
“KeyUsage” = “KeyEncipherment”,”DataEncipherment”,”KeyAgreement”
“Type” = “DocumentEncryptionCert”
}

PS C:> Nieuw-SelfSignedCertificate @Params

Vingerafdruk Onderwerp EnhancedKeyUsageList
———- ——- ——————–
14D535EG934370293BA203159EB00876A79959D8 CN=MyHost Document-Encryptie

Met dit type certificaat, kan je nu gebruik maken van het certificaat hebt gemaakt voor het coderen en decoderen van inhoud met behulp van PowerShell commando ‘ s als Bescherm-CMSMessage en Opheffen-CMSMessage.

Het versleutelen/decoderen van inhoud, zoals dit is nuttig als u nodig hebt om de gecodeerde gegevens rond aangezien u kunt dan gebruik maken van dit certificaat op een ander systeem om de gegevens te decoderen. Als u vertrouwen op de standaard (Data Protection API DPAPI) die is ingebouwd in Windows, dan zou je niet in staat om de gegevens te decoderen op andere systemen of voor andere gebruikers.

Samenvatting

PowerShell maakt het creëren van een self-signed certificaten ongelooflijk gemakkelijk om te doen. Deze certificaten hebben een groot aantal toepassingen, maar een belangrijk om te onthouden is dat ze moeten alleen gebruikt worden in de testen. U hoeft niet een geldig certificaat vertrouwen keten voor het valideren van uw self-signed certificaten.

Zien hoe snel en makkelijk het is om zelf-ondertekende certificaten, u kunt dit doen vandaag en goed te versleutelen van verbindingen of gegevens die u nodig!


Posted

in

by

Tags: