PowerShell kullanarak Self-Signed Certificate nasıl oluşturulur?

shutterstock

PKI’yi bilen çoğu Windows yöneticisi , self-signed certificate (kendinden imzalı sertifika) oluşturulmasına olanak veren MakeCert.exe yardımcı programı hakkında bilgi sahibidir . Bu aracı Microsoft .NET Framework SDK ve Microsoft Windows SDK’da bulabilirsiniz. Windows 8 ve Windows Server 2012’de, self-signed sertifika herhangi bir özel araç olmaksızın PowerShell 3.0 (veya üstü) kullanılarak oluşturulabilir.

Self-Signed Certificate oluşturmak için SelfSignedCertificate cmdlet’ini kullanma

PowerShell’de self-signed certificate oluşturmak için , PoSh PKI (Public Key Infrastructure) modülünün bir parçası olan New-SelfSignedCertificate cmdlet’inin kullanılması önerilmektedir.

PKI modülündeki tüm kullanılabilir cmdlet’leri listelemek için komutu çalıştabilrsiniz.

Get-Command -Module PKI

Herhangi bir nedenle bir PKI/CA dağıtmanın imkansız olduğu durumlarda, test amacıyla ya da Intranet hizmetlerinin (IIS, Exchange, Web Application Proxy, LDAPS, ADRMS, DirectAccess vb.) sertifikaları için kendinden imzalı bir sertifika kullanmanız önerilir. Bu gibi durumlarda harici bir sağlayıcıdan trusted sertifika satın almalısınız.

Bir sertifika oluşturmak için –DnsName (bir sunucunun DNS adı) ve -CertStoreLocation (oluşturulan sertifikanın yerleştirileceği yerel sertifika deposu ) değerlerini belirtmeniz gerekir. Windows 10’da (örneğimizde) Windows 8/8.1 ve Windows Server 2016/2012 R2/2012’de kendinden imzalı bir sertifika oluşturmak için aşağıdaki cmdlet’i kullanabilirsiniz.

Test.contoso.com DNS adı için bir sertifika oluşturmak ve bir bilgisayarda personal certificates alanına import etmek için aşağıdaki komutu çalıştırın.

New-SelfSignedCertificate -DnsName test.contoso.com -CertStoreLocation cert:\LocalMachine\My

Directory: Microsoft.PowerShell.Security\Certificate::LocalMachine\My
Thumbprint Subject
———- ——-
2779C7928D055B21AAA0Cfe2F6BE1A5C2CA83B30 CN=test.contoso.com

Bu komut bir sertifika oluşturur ve bunu bilgisayara import eder. Certlm.msc bileşenini açtıktan sonra, Personal bölümünde yeni bir sertifika bulunduğunu kontrol edebilirsiniz.

Varsayılan olarak, aşağıdaki ayarlara sahip self-signed bir sertifika oluşturulur.

  • Cryptographic algorithm: RSA
  • Key length: 2048
  • Acceptable key usage: Client Authentication, Server Authentication
  • The certificate can be used for: Digital Signature, Key Encipherment
  • Validity period: 1 year.

Not→ Kendinden imzalı bir sertifikanın geçerliliği, kuruluş tarihinden itibaren 1 yıl ile sınırlıdır. 3 yıllık sertifika almak için aşağıdaki komutları çalıştırabilirsiniz.

$todaydt = Get-Date
$3years = $todaydt.AddYears(3)
New-SelfSignedCertificate -dnsname test.contoso.com -notafter $3years -CertStoreLocation cert:\LocalMachine\My

Oluşturulan sertifikayı özel bir anahtarla parola korumalı bir PFX dosyasına export etmek için, aşağıdaki komuta ihtiyacınız var.

$CertPassword = ConvertTo-SecureString -String “YourPassword” -Force –AsPlainText

Export-PfxCertificate -Cert cert:\LocalMachine\My\2779C7928D055B21AAA0Cfe2F6BE1A5C2CA83B30 -FilePath C:\test.pfx -Password $CertPassword

Sertifika ortak anahtarı aşağıdaki gibi dışarı aktarılabilir.

Export-Certificate -Cert Cert:\LocalMachine\My\2779C7928D055B21AAA0Cfe2F6BE1A5C2CA83B30 -FilePath C:\tstcert.cer

Bu genel anahtar veya sertifika dosyasının kendisi bir GPO kullanarak bir web sunucusu veya domain istemcilerine yüklenebilir.

New-SelfSignedCertificate cmdlet’in kullanışlı özelliklerinden biri, farklı isimlerle Subject Alternative Names (SAN) içeren bir sertifika oluşturmaya izin vermesidir.

Not→ Birkaç isme sahip bir sertifika oluşturursanız, DnsName parametresindeki ilk ad bir sertifikanın CN adı (Common Name) olarak kullanılır.

Örneğin, aşağıdaki isimlere sahip kendinden imzalı bir SAN sertifikası oluşturalım.

  • Subject Name (CN): adfs1.contoso.com
  • Subject Alternative Name (DNS): web_gw.contoso.com
  • Subject Alternative Name (DNS): enterprise_reg.contoso.com

Komut şöyle görünecektir.

New-SelfSignedCertificate -DnsName adfs1.contoso.com,web_gw.contoso.com,enterprise_reg.contoso.com -CertStoreLocation cert:\LocalMachine\My

Ayrıca, tüm domain için bir sertifika oluşturabilirsiniz. Bunu yapmak için * .contoso.com adresini bir sunucu adı olarak belirtin .

New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname *.contoso.com

KAYNAKPOWERSHELL