جدول المحتويات:
هذه الوحدة غير مدعومة رسميًا. لقد تم إنشاؤه كوحدة ملائمة لإنشاء شهادات موقعة ذاتيًا لتبسيط اختبار وظائف HTTPS.
لا ينبغي استخدام هذه الوحدة في أي سيناريوهات الإنتاج؛ فهو مصمم لإنشاء شهادات موقعة ذاتيًا لأغراض الاختبار فقط.
تم تصميم هذه الوحدة لتكون وسيلة ملائمة عبر الأنظمة الأساسية لإنشاء شهادات موقعة ذاتيًا في كل من PowerShell Core وWindows PowerShell 5.1.
نظرًا لأن .NET Core يقوم بالفعل بتضمين واجهة برمجة التطبيقات الخاصة بالتشفير/الشهادة عبر الأنظمة الأساسية، فإن هذه الوحدة عبارة عن وحدة نصية أصلية من PowerShell، بدون أي تبعيات ثنائية.
تتضمن بعض أهداف هذه الوحدة ما يلي:
X509HighlySpecificCryptoObject
لتعيين ومعالجةقد ترغب في إلقاء نظرة على بعض البدائل الأخرى لإنشاء الشهادات الموقعة ذاتيًا، والمدرجة هنا:
Windows PowerShell's New-SelfSignedCertificate
cmdlet من وحدة 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
والتي تصف امتدادات الشهادات شائعة الاستخدام.
هذه الوحدة مرخصة من معهد ماساتشوستس للتكنولوجيا. راجع LICENSE.txt.