Daftar isi:
Modul ini tidak didukung secara resmi. Ini telah dibuat sebagai modul kemudahan untuk pembuatan sertifikat yang ditandatangani sendiri guna menyederhanakan pengujian fungsionalitas HTTPS.
Modul ini tidak boleh digunakan dalam skenario produksi apa pun; itu dirancang untuk membuat sertifikat yang ditandatangani sendiri untuk tujuan pengujian saja.
Modul ini dirancang untuk menjadi cara lintas platform yang nyaman untuk menghasilkan sertifikat yang ditandatangani sendiri di PowerShell Core dan Windows PowerShell 5.1.
Karena .NET Core sudah menyematkan API kriptografi/sertifikat lintas platformnya sendiri, modul ini adalah modul skrip PowerShell asli, tanpa ketergantungan biner.
Beberapa tujuan modul ini antara lain:
X509HighlySpecificCryptoObject
yang misteriusAnda mungkin ingin melihat beberapa alternatif lain untuk pembuatan sertifikat yang ditandatangani sendiri, yang tercantum di sini:
Cmdlet New-SelfSignedCertificate
Windows PowerShell dari modul PkiClient.
Ini dapat digunakan dari PowerShell Core di Windows menggunakan modul WindowsCompatibility seperti ini:
Install-Module WindowsCompatibility
Import-WinModule PKI
New-SelfSignedCertificate # args as needed
Namun, modul ini hanya tersedia di Windows — tidak ada versi Linux.
Alat global dotnet dotnet-dev-certs
, dirancang untuk menghasilkan sertifikat yang ditandatangani sendiri untuk pengembangan ASP.NET Core.
Ini dapat diinstal dari dotnet CLI.
openssl
, yang berfungsi lintas platform, tetapi mungkin tidak lebih baik dibandingkan dengan opsi asli PowerShell dan menggunakan format PEM daripada PFX.
Untuk membuat sertifikat sederhana, berikut ini akan berfungsi:
> New-SelfSignedCertificate
Certificate written to C:UsersroholtDocumentsDevsandboxcertificate.pfx
Thumbprint Subject EnhancedKeyUsageList
---------- ------- --------------------
A51B016324B5D2F11340CDCC52004B8129C88D3B CN = localhost
Ini akan membuat sertifikat baru bernama certificate.pfx
di CWD Anda untuk localhost
. Perintah itu sendiri mengembalikan objek X509Certificate2
yang menjelaskan sertifikat yang ditulis ke disk. Anda dapat memeriksa objek ini untuk menemukan propertinya. Sertifikat ini tidak akan memiliki penggunaan kunci, tidak ada batasan dasar, tidak ada penggunaan kunci yang ditingkatkan, dan ekstensi Kunci Pengidentifikasi Subjek.
Catatan : Untuk mengulangi perintah ini, Anda memerlukan parameter -Force
untuk menimpa sertifikat lama yang Anda buat sebelumnya.
Perintah New-SelfSignedCertificate
memungkinkan spesifikasi nama lengkap yang dibedakan serta beberapa opsi lainnya:
> $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}
Sertifikat yang dihasilkan oleh perintah di atas akan memiliki properti berikut:
Nama pembeda penerbit dan subjek ditetapkan menjadi:
CN=example.org, OU=Sales, O=Umbrella Corporation, L=Omaha, S=Nebraska, C=US, [email protected]
Perlindungan kata sandi (dalam hal ini dengan kata sandi 'Your password'
).
Masa berlaku satu tahun dimulai dari waktu pembuatan (dengan milidetik terpotong).
Kunci RSA 4096-bit.
Ekstensi batasan dasar dengan CertificateAuthority
disetel ke true
.
Penggunaan kunci dasar Digital Signature
dan Key Encipherment
ditunjukkan.
Penggunaan kunci yang ditingkatkan Server Authentication
dan Client Authentication
ditunjukkan.
Perintah ini juga menawarkan parameter -AdditionalExtension
, yang mengambil array System.Security.Cryptography.X509Certificates.X509Extension
untuk ditambahkan ke sertifikat pembuatan apa pun.
Modul ini belum mendukung file PEM, yang banyak digunakan di dunia Linux. Meskipun bukan format sertifikat, ini adalah pengkodean sertifikat yang umum dan kami harus berusaha untuk mendukungnya dengan cara tertentu.
Saat ini, penulis tidak mengetahui adanya dukungan PEM asli untuk PowerShell Core atau .NET Core.
Ekstensi sertifikat yang dihasilkan oleh modul ini saat ini semuanya menyetel bidang Critical
ke false
untuk memungkinkan fleksibilitas yang lebih besar.
Namun mungkin diinginkan untuk mengkonfigurasi salah satu atau semua ini untuk ditetapkan sebagai Critical
. Idealnya hal ini dapat dilakukan tanpa mengacaukan sejumlah besar parameter perintah.
Saat ini di ServerAuthentication
dan ClientAuthentication
penggunaan kunci yang ditingkatkan didukung (dengan cara yang membatasi, untuk kemudahan penggunaan).
Idealnya, lebih banyak opsi untuk hal ini dapat disediakan.
Modul ini dapat menyediakan sekumpulan kelas yang menghasilkan X509Extension
yang menjelaskan ekstensi sertifikat yang umum digunakan.
Modul ini berlisensi MIT. Lihat LISENSI.txt.