تكنولوجيا

كيفية إنشاء شهادة موقعة ذاتيًا باستخدام 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 من السهل للغاية إنشاء شهادة موقعة ذاتيًا. لهذه الشهادات العديد من الاستخدامات ، ولكن الشيء المهم الذي يجب تذكره هو أنه لا يمكن استخدامها إلا للاختبار. لن يكون لديك سلسلة شهادات ثقة صالحة للتحقق من شهادتك الموقعة ذاتيًا.

لمعرفة مدى سرعة وسهولة إنشاء شهادة موقعة ذاتيًا ، يمكنك البدء في القيام بذلك الآن وتشفير أي اتصال أو بيانات تحتاجها بشكل صحيح!

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى