สารบัญ:
โมดูลนี้ไม่ได้รับการสนับสนุนอย่างเป็นทางการ ได้รับการสร้างขึ้นเป็นโมดูลอำนวยความสะดวกสำหรับการสร้างใบรับรองที่ลงนามด้วยตนเอง เพื่อลดความซับซ้อนในการทดสอบฟังก์ชันการทำงานของ HTTPS
ไม่ควรใช้โมดูลนี้ในสถานการณ์การผลิตใดๆ ได้รับการออกแบบมาเพื่อสร้างใบรับรองที่ลงนามด้วยตนเองเพื่อการทดสอบเท่านั้น
โมดูลนี้ได้รับการออกแบบมาให้เป็นวิธีที่สะดวกและข้ามแพลตฟอร์มในการสร้างใบรับรองที่ลงนามด้วยตนเองทั้งใน PowerShell Core และ Windows PowerShell 5.1
เนื่องจาก .NET Core ได้ฝัง API การเข้ารหัส/ใบรับรองข้ามแพลตฟอร์มของตัวเองไว้แล้ว โมดูลนี้จึงเป็นโมดูลสคริปต์ PowerShell ดั้งเดิม โดยไม่มีการขึ้นต่อกันแบบไบนารี
เป้าหมายบางประการสำหรับโมดูลนี้ได้แก่:
X509HighlySpecificCryptoObject
การกำหนดและการจัดการคุณอาจต้องการดูทางเลือกอื่นๆ สองสามรายการสำหรับการสร้างใบรับรองที่ลงนามด้วยตนเอง ซึ่งแสดงไว้ที่นี่:
New-SelfSignedCertificate
cmdlet ของ Windows PowerShell จากโมดูล PkiClient
สามารถใช้งานได้จาก PowerShell Core บน Windows โดยใช้โมดูล WindowsCompatibility ดังนี้:
Install-Module WindowsCompatibility
Import-WinModule PKI
New-SelfSignedCertificate # args as needed
อย่างไรก็ตาม โมดูลนี้ใช้ได้เฉพาะบน Windows เท่านั้น ไม่มีเวอร์ชัน Linux
เครื่องมือสากล dotnet dotnet-dev-certs
ออกแบบมาเพื่อสร้างใบรับรองที่ลงนามด้วยตนเองสำหรับการพัฒนา ASP.NET Core
สามารถติดตั้งได้จาก dotnet CLI
openssl
ซึ่งทำงานข้ามแพลตฟอร์ม แต่อาจไม่ดีนักเมื่อเทียบกับตัวเลือกดั้งเดิมของ PowerShell และใช้ PEM แทนที่จะเป็นรูปแบบ PFX
หากต้องการสร้างใบรับรองแบบง่าย สิ่งต่อไปนี้จะได้ผล:
> New-SelfSignedCertificate
Certificate written to C:UsersroholtDocumentsDevsandboxcertificate.pfx
Thumbprint Subject EnhancedKeyUsageList
---------- ------- --------------------
A51B016324B5D2F11340CDCC52004B8129C88D3B CN = localhost
สิ่งนี้จะสร้างใบรับรองใหม่ที่เรียกว่า certificate.pfx
ใน CWD ของคุณสำหรับ localhost
คำสั่งส่งคืนออบเจ็กต์ X509Certificate2
ที่อธิบายใบรับรองที่เขียนลงดิสก์ คุณสามารถตรวจสอบวัตถุนี้เพื่อค้นหาคุณสมบัติได้ ใบรับรองนี้จะไม่มีการใช้งานคีย์ ไม่มีข้อจำกัดพื้นฐาน ไม่มีการใช้คีย์ที่ได้รับการปรับปรุง และส่วนขยายคีย์ตัวระบุหัวเรื่อง
หมายเหตุ : หากต้องการทำซ้ำคำสั่งนี้ คุณจะต้องใช้พารามิเตอร์ -Force
เพื่อเขียนทับใบรับรองเก่าที่คุณสร้างไว้ก่อนหน้านี้
คำสั่ง New-SelfSignedCertificate
อนุญาตให้ระบุชื่อที่แตกต่างแบบเต็ม รวมถึงตัวเลือกอื่นๆ สองสามตัว:
> $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}
ใบรับรองที่สร้างโดยคำสั่งดังกล่าวจะมีคุณสมบัติดังต่อไปนี้:
ผู้ออกและชื่อเฉพาะที่กำหนดเป็น:
CN=example.org, OU=Sales, O=Umbrella Corporation, L=Omaha, S=Nebraska, C=US, [email protected]
การป้องกันรหัสผ่าน (ในกรณีนี้ด้วยรหัสผ่าน 'Your password'
)
ระยะเวลาที่ถูกต้องหนึ่งปีเริ่มต้นจากเวลาที่สร้าง (โดยตัดทอนมิลลิวินาที)
คีย์ RSA 4096 บิต
ส่วนขยายข้อจำกัดพื้นฐานที่มีการตั้งค่า CertificateAuthority
เป็น true
การใช้งานคีย์พื้นฐาน Digital Signature
และ Key Encipherment
ที่ระบุ
การใช้คีย์ที่ปรับปรุง Server Authentication
และ Client Authentication
ระบุไว้
คำสั่งยังมีพารามิเตอร์ -AdditionalExtension
ซึ่งรับอาร์เรย์ของ System.Security.Cryptography.X509Certificates.X509Extension
เพื่อเพิ่มลงในใบรับรองการสร้างใดๆ
โมดูลนี้ยังไม่รองรับไฟล์ PEM ซึ่งใช้กันอย่างแพร่หลายในโลก Linux แม้ว่าจะไม่ใช่รูปแบบใบรับรองต่อกัน แต่เป็นการเข้ารหัสใบรับรองทั่วไป และเราควรพยายามสนับสนุนสิ่งเหล่านี้ในทางใดทางหนึ่ง
ปัจจุบัน ผู้เขียนยังไม่ทราบถึงการรองรับ PEM ของ PowerShell Core หรือ .NET Core
ส่วนขยายใบรับรองที่สร้างโดยโมดูลนี้ในปัจจุบันทั้งหมดได้ตั้งค่าฟิลด์ Critical
เป็น false
เพื่อให้มีความยืดหยุ่นมากขึ้น
อย่างไรก็ตาม อาจเป็นที่พึงปรารถนาที่จะกำหนดค่าบางส่วนหรือทั้งหมดเหล่านี้ให้ถูกกำหนดให้เป็น Critical
ตามหลักการแล้วสิ่งนี้สามารถทำได้โดยไม่ต้องเกะกะคำสั่งที่มีพารามิเตอร์จำนวนมากอยู่แล้ว
ปัจจุบันรองรับการใช้งานคีย์ที่ปรับปรุงแล้วบน ServerAuthentication
และ ClientAuthentication
(ในลักษณะที่จำกัด เพื่อความสะดวกในการใช้งาน)
ควรมีทางเลือกเพิ่มเติมสำหรับสิ่งนี้
โมดูลสามารถจัดเตรียมชุดของคลาสที่สร้าง X509Extension
ซึ่งอธิบายส่วนขยายใบรับรองที่ใช้กันทั่วไป
โมดูลนี้ได้รับอนุญาตจาก MIT ดู LICENSE.txt