كيفية إنشاء شهادة موقعة ذاتيًا باستخدام PowerShell – CloudSavvy IT

تعد الشهادات الموقعة ذاتيًا طريقة سهلة لإجراء الاختبارات والمهام الأخرى الأقل أهمية. لا تحتوي الشهادة الموقعة ذاتيًا على سلسلة شهادات موثوق بها كنسخة احتياطية ، ويتم توقيعها بواسطة المستخدم الذي أنشأها. إذا كنت تثق في الكيان الذي وقع الشهادة ، فيمكنك استخدامه ككيان تم التحقق منه بشكل صحيح.
إذا كنت بحاجة إلى إنشاء شهادة موقعة ذاتيًا ، فإن إحدى الطرق هي استخدام PowerShell. في هذه المقالة ، ستتعلم كيفية إنشاء شهادة موقعة ذاتيًا في PowerShell.
قم بإنشاء شهادة موقعة ذاتيًا
لإنشاء شهادة موقعة ذاتيًا باستخدام PowerShell ، يمكنك استخدام ملفات New-SelfSignedCertificate
أمر صغير.تم تضمين هذا الأمر cmdlet في PKI
وحدة.
هناك العديد من الخيارات لإنشاء شهادة.الأنواع الشائعة من الشهادات الموقعة ذاتيًا هي SSLServerAuthentication
(القيمة الافتراضية لـ cmdlet) و CodeSigning
بالإضافة إلى ذلك ، يمكنك إنشاء ملف DocumentEncryptionCert
، هذا مفيد جدا لتشفير الملفات اخر واحد Custom
شهادة تسمح لك بتحديد العديد من الخيارات المخصصة.
دعنا نواصل إنشاء ملف SSLServerAuthentication
شهادة. هذه طريقة شائعة الاستخدام لحماية مواقع الويب باستخدام تشفير SSL. يمكنك رؤية مثال أدناه.في هذا المثال ، يتم تخزين الشهادة في Cert:LocalMachineMy Certificate Store
.
$Params = @
"DnsName" = @("mywebsite.com","www.mywebsite.com")
"CertStoreLocation" = "Cert:LocalMachineMy"
"NotAfter" = (Get-Date).AddMonths(6)
"KeyAlgorithm" = "RSA"
"KeyLength" = "2048"
PS C:> New-SelfSignedCertificate @Params
PSParentPath: Microsoft.PowerShell.SecurityCertificate::LocalMachineMy
Thumbprint Subject EnhancedKeyUsageList
---------- ------- --------------------
4EFF6B1A0F61B4BG692C77F09889BD151EE8BB58 CN=mywebsite.com Client Authentication, Server Authentication
إذا سارت الأمور على ما يرام ، يجب أن يكون لديك الآن شهادة تم إنشاؤها حديثًا!ستلاحظ أن الإخراج يعود إلى الموضوع ، لكن الموضوع يظهر فقط النجاح DnsName
نطاق. وذلك لأن عنوان URL الثاني يصبح جزءًا من قائمة الموضوعات البديلة.
* لاحظ أنه إذا حاولت تشغيل هذا البرنامج بدلاً من تشغيله كمسؤول ، فستتلقى رسالة الخطأ التالية:
New-SelfSignedCertificate: CertEnroll::CX509Enrollment::_CreateRequest: Access denied. 0x80090010 (-2146893808 NTE_PERM)
كما يمكنك أن تقول Access denied
، ليس لديك إذن لتشغيله. *
اعثر على معلومات حول شهاداتنا
لنتأكد من إنشاء الشهادة بالطريقة التي توقعناها.لاستخدام PowerShell للعثور على معلومات حول شهادة معينة ، يمكنك استخدام Get-ChildItem
cmdlets ، تمامًا كما يمكنك سرد الملفات في دليل.
PS C:> Get-ChildItem -Path "Cert:LocalMachineMy" | Where-Object Thumbprint -EQ 4EFF6B1A0F61B4BF692C77F09889AD151EE8BB58 | Select-Object *
PSPath : Microsoft.PowerShell.SecurityCertificate::LocalMachineMy4EFF6B1A0F61B4BF692C77F09889AD151EE8BB58
58
PSParentPath : Microsoft.PowerShell.SecurityCertificate::LocalMachineMy
PSChildName : 4EFF6B1A0F61B4BF692C77F09889AD151EE8BB58
PSDrive : Cert
PSProvider : Microsoft.PowerShell.SecurityCertificate
PSIsContainer : False
EnhancedKeyUsageList : Client Authentication (1.3.6.1.5.5.7.3.2), Server Authentication (1.3.6.1.5.5.7.3.1)
DnsNameList : mywebsite.com, www.mywebsite.com
SendAsTrustedIssuer : False
EnrollmentPolicyEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty
EnrollmentServerEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty
PolicyId :
Archived : False
Extensions : System.Security.Cryptography.Oid, System.Security.Cryptography.Oid,
System.Security.Cryptography.Oid, System.Security.Cryptography.Oid
FriendlyName :
HasPrivateKey : True
PrivateKey : System.Security.Cryptography.RSACng
IssuerName : System.Security.Cryptography.X509Certificates.X500DistinguishedName
NotAfter : 6/22/2020 11:50:15 AM
NotBefore : 12/22/2019 10:40:20 AM
PublicKey : System.Security.Cryptography.X509Certificates.PublicKey
RawData : 48, 130, 3, 55…
SerialNumber : 608C4D5E6B8D41B44ADDC6BD725FE264
SignatureAlgorithm : System.Security.Cryptography.Oid
SubjectName : System.Security.Cryptography.X509Certificates.X500DistinguishedName
Thumbprint : 4EFF6B1A0F61B4BF692C77F09889AD151EE8BB58
Version : 3
Handle : 2628421609632
Issuer : CN=mywebsite.com
Subject : CN=mywebsite.com
هناك الكثير من المعلومات الرائعة هنا ، ولكن قد تكون كذلك DnsNameList
يتم الآن عرض موقعين.بجانب NotAfter
التاريخ مكتوب بشكل صحيح على أنه 6 أشهر من تاريخ الإنشاء.
شهادة توقيع الكود
إذا كنت تعمل في PowerShell ، فسوف تفهم استراتيجيات التنفيذ.إذا قمت بتعيين استراتيجية التنفيذ إلى AllSigned
ثم تحتاج إلى توقيع كل برنامج نصي يتم تشغيله على نظامك. إن إنشاء شهادة لإجراء هذه العملية أمر بسيط للغاية!
PS C:> New-SelfSignedCertificate -Type 'CodeSigningCert' -DnsName 'MyHost'
PSParentPath: Microsoft.PowerShell.SecurityCertificate::LocalMachineMY
Thumbprint Subject EnhancedKeyUsageList
---------- ------- --------------------
14D535EG834370293BA103159EB00876A79959D8 CN=MyHost Code Signing
شهادة حماية الملف
ربما لم تواجه هذا الموقف من قبل ، ولكن يمكن لـ PowerShell و Data Protection API استخدام شهادات حماية المستندات لتشفير الملفات على النظام.استعمال New-SelfSignedCertificate
cmdlet ، يمكننا بسهولة إنشاء شهادة لتشفير مستنداتك.
$Params = @
"DnsName" = "MyHost"
"CertStoreLocation" = "Cert:CurrentUserMy"
"KeyUsage" = "KeyEncipherment","DataEncipherment","KeyAgreement"
"Type" = "DocumentEncryptionCert"
PS C:> New-SelfSignedCertificate @Params
Thumbprint Subject EnhancedKeyUsageList
---------- ------- --------------------
14D535EG934370293BA203159EB00876A79959D8 CN=MyHost Document Encryption
باستخدام هذا النوع من الشهادات ، يمكنك الآن استخدام الشهادة التي تم إنشاؤها لتشفير وفك تشفير المحتوى باستخدام أوامر PowerShell ، مثل Protect-CMSMessage
مع UnProtect-CMSMessage
.
إذا كنت بحاجة إلى تمرير بيانات مشفرة ، فإن تشفير / فك تشفير محتوى مثل هذا يصبح مفيدًا لأنه يمكنك استخدام هذه الشهادة لفك تشفير البيانات على نظام آخر. إذا كنت تعتمد على واجهة برمجة تطبيقات حماية البيانات القياسية (DPAPI) المضمنة في Windows ، فلن تتمكن من فك تشفير البيانات من الأنظمة الأخرى أو المستخدمين الآخرين.
التعميم
يجعل PowerShell من السهل للغاية إنشاء شهادة موقعة ذاتيًا. لهذه الشهادات العديد من الاستخدامات ، ولكن الشيء المهم الذي يجب تذكره هو أنه لا يمكن استخدامها إلا للاختبار. لن يكون لديك سلسلة شهادات ثقة صالحة للتحقق من شهادتك الموقعة ذاتيًا.
لمعرفة مدى سرعة وسهولة إنشاء شهادة موقعة ذاتيًا ، يمكنك البدء في القيام بذلك الآن وتشفير أي اتصال أو بيانات تحتاجها بشكل صحيح!