अधिकांश Windows व्यवस्थापक, जो PKI से परिचित हैं, MakeCert.exe
के बारे में जानते हैं उपकरण, जो एक स्व-हस्ताक्षरित प्रमाणपत्र बनाने की अनुमति देता है। यह उपकरण Microsoft .NET Framework SDK और Microsoft Windows SDK का भाग है। आधुनिक Windows संस्करणों (Windows 10/8.1 और Windows Server 2019/2016/2012R2) पर आप अंतर्निहित PowerShell cmdlet New-SelfSignedCertificate
का उपयोग करके एक स्व-हस्ताक्षरित प्रमाणपत्र बना सकते हैं। अतिरिक्त उपकरणों का उपयोग किए बिना।
स्व-हस्ताक्षरित प्रमाणपत्र बनाने के लिए नए-स्व-हस्ताक्षरित प्रमाणपत्र PowerShell Cmdlet का उपयोग करना
PowerShell के साथ स्व-हस्ताक्षरित प्रमाणपत्र बनाने के लिए, आप नए-स्व-हस्ताक्षरित प्रमाणपत्र का उपयोग कर सकते हैं cmdlet, जो PoSh PKI . का एक भाग है (सार्वजनिक कुंजी अवसंरचना) मॉड्यूल:
PKI मॉड्यूल में सभी उपलब्ध cmdlets को सूचीबद्ध करने के लिए, कमांड चलाएँ।
गेट-कमांड -मॉड्यूल PKI
यदि आप पीकेआई/सीए अवसंरचना को परिनियोजित नहीं कर सकते हैं या एक विश्वसनीय खरीद नहीं कर सकते हैं, तो परीक्षण उद्देश्यों के लिए स्व-हस्ताक्षरित प्रमाणपत्रों का उपयोग करने या आंतरिक इंट्रानेट सेवाओं (आईआईएस, एक्सचेंज, वेब एप्लिकेशन प्रॉक्सी, एलडीएपीएस, एडीआरएमएस, डायरेक्ट एक्सेस, आदि) के लिए प्रमाण पत्र प्रदान करने की अनुशंसा की जाती है। किसी बाहरी प्रदाता से प्रमाणपत्र।
युक्ति . यह न भूलें कि Let’s Encrypt से आप आसानी से एक निःशुल्क एसएसएल प्रमाणपत्र प्राप्त कर सकते हैं। लेट्स एनक्रिप्ट एसएसएल प्रमाणपत्र जारी करने और इसे विंडोज सर्वर पर आईआईएस साइट से बांधने का एक उदाहरण यहां दिया गया है।प्रमाणपत्र बनाने के लिए, आपको –DnsName . के मान निर्दिष्ट करने होंगे (सर्वर का नाम, नाम मनमाना हो सकता है और लोकलहोस्ट नाम से भिन्न हो सकता है) और -CertStoreLocation (एक स्थानीय सर्टिफिकेट स्टोर जिसमें जनरेट किया गया सर्टिफिकेट रखा जाएगा)। आप Windows 10 (इस उदाहरण में), Windows 8.1 और Windows Server 2019/2016/2012 R2/2012 पर स्व-हस्ताक्षरित प्रमाणपत्र बनाने के लिए cmdlet का उपयोग कर सकते हैं।
DNS नाम test.contoso.com (FQDN नाम का उपयोग करें) के लिए एक नया SSL प्रमाणपत्र (डिफ़ॉल्ट SSLServerAuthentication प्रकार का) बनाने के लिए और इसे कंप्यूटर पर व्यक्तिगत प्रमाणपत्रों की सूची में रखने के लिए, निम्न कमांड चलाएँ:
नया-SelfSignedCertificate -DnsName test.contoso.com -CertStoreLocation cert:\LocalMachine\My
<पूर्व>निर्देशिका:Microsoft.PowerShell.Security\Certificate::LocalMachine\MyThumbprint विषय----------- 95 10 95 10 95 10 95 76 एफ. यदि आप इस आदेश को गैर-उन्नत पावरशेल सत्र (स्थानीय व्यवस्थापक अनुमतियों के बिना) में चलाते हैं, तो एक त्रुटि दिखाई देती है:
नया स्वहस्ताक्षरित प्रमाणपत्र:CertEnroll::CX509Enrollment::_CreateRequest:प्रवेश निषेध। 0x80090010 (-2146893808 NTE_PERM)
यदि आपने गैर-मानक क्रिप्टोग्राफ़िक प्रदाता (CSP) निर्दिष्ट किया है, उदाहरण के लिए, -KeyAlgorithm "ECDSA_secP256r1" -प्रदाता "Microsoft स्मार्ट कार्ड कुंजी संग्रहण प्रदाता"
का उपयोग करके पैरामीटर, सुनिश्चित करें कि यह आपके कंप्यूटर पर स्थापित है (डिफ़ॉल्ट Microsoft एन्हांस्ड क्रिप्टोग्राफ़िक प्रदाता CSP है)। अन्यथा, एक त्रुटि दिखाई देगी:
नया-स्व-हस्ताक्षरित प्रमाणपत्र:CertEnroll::CX509Enrollment::_CreateRequest:प्रदाता प्रकार परिभाषित नहीं है। 0x80090017 (-2146893801 NTE_PROV_TYPE_NOT_DEF)।
यह आदेश एक नया प्रमाणपत्र बनाता है और इसे कंप्यूटर के व्यक्तिगत प्रमाणपत्र स्टोर में आयात करता है। certlm.msc खोलें MMC स्नैप-इन, सुनिश्चित करें कि व्यक्तिगत . में एक नया प्रमाणपत्र दिखाई देता है प्रमाणपत्र स्टोर का अनुभाग।
डिफ़ॉल्ट रूप से, निम्न सेटिंग्स के साथ एक स्व-हस्ताक्षरित प्रमाणपत्र उत्पन्न होता है:
- क्रिप्टोग्राफ़िक एल्गोरिथम: RSA;
- कुंजी लंबाई:2048 बिट;
- स्वीकार्य कुंजी उपयोग: ग्राहक प्रमाणीकरण और सर्वर प्रमाणीकरण;
- प्रमाणपत्र का उपयोग निम्न के लिए किया जा सकता है: डिजिटल हस्ताक्षर , कुंजी गूढ़लेख;
- प्रमाणपत्र वैधता अवधि:1 वर्ष ।
Get-ChildItem cmdlet का उपयोग करके, आप बनाए गए प्रमाणपत्र के सभी मापदंडों को उसके थंबप्रिंट द्वारा प्रदर्शित कर सकते हैं:
Get-ChildItem -Path "Cert:\LocalMachine\My" | कहां-वस्तु थंबप्रिंट-ईक्यू 2175ए76बी10एफ843676951965F52A718F635FFA043 | सेलेक्ट-ऑब्जेक्ट **
PSPath:Microsoft.PowerShell.Security \ प्रमाणपत्र ::LocalMachine \ मेरे \ 2175A76B10F843676951965F52A718F635FFA043PSParentPath:Microsoft.PowerShell.Security \ प्रमाणपत्र ::LocalMachine \ MyPSChildName:2175A76B10F843676951965F52A718F635FFA043PSDrive:CertPSProvider:Microsoft.PowerShell.Security \ CertificatePSIsContainer:FalseEnhancedKeyUsageList:{क्लाइंट प्रमाणीकरण (1.3.6.1.5.5.7.3.2), सर्वर प्रमाणीकरण (1.3.6.1.5.5.7.3.1)}DnsNameList :{test.contoso.com}SendAsTrustedIssuer :FalseEnrollmentPolicyEndPoint:Microsoft.Certificate.Service.EnrollmentPointyEnroll. .Commands.EnrollmentEndPointPropertyPolicyId :संग्रहीत :FalseExtensions :{System.Security.Cryptography.Oid। System.Security.Cryptography.Oid। Phy.oid} दोस्ताना नाम:issuername:system.security.cryptophy.x509certificates.x500distinguewhitenamenotafter:05/11/2021 06:19:42notbefore:05/11/2020 05:59:42hasprivatey:trueprivatekey:pulykey:सिस्टम। Security.cryptrography। X509Certificates.PublicKeyRawData:{48, 130, 3, 45 ...} serialnumber:6797F5E3F870478D4D3798BEB291DBF3SubjectName:System.Security.Cryptography.X509Certificates.X500DistinguishedNameSignatureAlgorithm:System.Security.Cryptography.OidThumbprint:2175A76B10F843676951965F52A718F635FFA043Version:3Handle:2834444631568Issuer:सीएन =test.contoso। कॉमविषय :CN=test.contoso.comनोट . ऐसा स्व-हस्ताक्षरित प्रमाणपत्र इसके निर्माण की तारीख से 1 वर्ष में समाप्त हो जाएगा। आप –NotAfter . का उपयोग करके एक भिन्न प्रमाणपत्र वैधता अवधि निर्धारित कर सकते हैं विकल्प। उदाहरण के लिए, आप निम्नलिखित आदेशों के साथ तीन साल की वैधता अवधि वाला एसएसएल/टीएलएस प्रमाणपत्र जारी कर सकते हैं:
$todaydt =Get-Date
$3years =$todaydt.AddYears(3)
New-SelfSignedCertificate -dnsname test.contoso.com -notafter $3years -CertStoreLocation cert:\LocalMachine\My
आप एक प्रमाणपत्र श्रृंखला बना सकते हैं। सबसे पहले, एक रूट सर्टिफिकेट (CA) बनाया जाता है, और उसके आधार पर एक SSL सर्वर सर्टिफिकेट जेनरेट किया जाता है:
$rootCert =New-SelfSignedCertificate -विषय 'CN=TestRootCA,O=TestRootCA,OU=TestRootCA' -KeyExportPolicy Exportable -KeyUsage CertSign,CRLSign,DigitalSignature -KeyLangth 2048 -KeyUsageProperty 'A' -KeyAlgorithm 'A' -KeyAlgorithm'A' -प्रदाता 'Microsoft एन्हांस्ड RSA और AES क्रिप्टोग्राफ़िक प्रदाता'
नया-SelfSignedCertificate -CertStoreLocation cert:\LocalMachine\My -DnsName "test2.contoso.com" -हस्ताक्षरकर्ता $rootCert -KeyUsage KeyEncipherment,DigitalSignature
पासवर्ड-संरक्षित PFX फ़ाइल में निजी कुंजी के साथ जेनरेट किए गए प्रमाणपत्र को निर्यात करने के लिए, आपको उसका थंबप्रिंट निर्दिष्ट करना होगा। इसे New-SelfSignedCertificate कमांड के परिणामों से कॉपी किया जा सकता है। आपको प्रमाणपत्र सुरक्षा पासवर्ड निर्दिष्ट करने और इसे सिक्योरस्ट्रिंग प्रारूप में बदलने की भी आवश्यकता है:
$CertPassword =ConvertTo-SecureString -String "YourPassword" -Force -AsPlainText
Export-PfxCertificate -Cert cert:\LocalMachine\My\2779C7928D055B21AAA0Cfe2F6BE1A5C2CA83B30 -FilePath C:\test पासवर्ड।>
प्रमाणपत्र सार्वजनिक कुंजी को निम्नानुसार निर्यात किया जा सकता है:
निर्यात-प्रमाणपत्र - प्रमाणपत्र प्रमाणपत्र:\LocalMachine\My\2779C7928D055B21AAA0Cfe2F6BE1A5C2CA83B30 - FilePath C:\tstcert.cer
सुनिश्चित करें कि *.cer (PFX) प्रमाणपत्र फ़ाइल निर्दिष्ट निर्देशिका में दिखाई देती है। यदि आप उस पर राइट-क्लिक करते हैं और “प्रमाणपत्र स्थापित करें . का चयन करते हैं “मेनू आइटम, आप प्रमाणपत्र आयात विज़ार्ड . का उपयोग कर सकते हैं अपने कंप्यूटर पर विश्वसनीय रूट प्रमाणपत्र में प्रमाणपत्र जोड़ने के लिए।
सर्टिफ़ स्टोर स्थान चुनें -> स्थानीय मशीन , सभी प्रमाणपत्रों को निम्न स्टोर में रखें -> विश्वसनीय रूट प्रमाणन प्राधिकरण ।
आप एक प्रमाणपत्र बना सकते हैं और इसे कमांड का उपयोग करके तुरंत कंप्यूटर के विश्वसनीय रूट प्रमाणपत्र स्टोर में आयात कर सकते हैं:
$SelfSignCert=New-SelfSignedCertificate…..
$certFile =Export-Certificate -Cert $SelfSignCert -FilePath C:\ps\export-certname.cer
Import-Certificate -CertStoreLocation Cert:\LocalMachine\AuthRoot -FilePath $certFile.FullName
यह सार्वजनिक कुंजी या प्रमाणपत्र फ़ाइल स्वयं GPO का उपयोग करके सक्रिय निर्देशिका डोमेन के सभी कंप्यूटरों और सर्वरों पर परिनियोजित की जा सकती है (GPO का उपयोग करके डोमेन कंप्यूटर पर प्रमाणपत्र कैसे परिनियोजित करें?)
विषय वैकल्पिक नामों के साथ एक स्व-हस्ताक्षरित प्रमाणपत्र बनाएं
New-SelfSignedCertificate cmdlet की उपयोगी विशेषताओं में से एक कई अलग-अलग नामों के साथ प्रमाणपत्र बनाने की क्षमता है, विषय वैकल्पिक नाम (SAN) ।
नोट .Makecert.exe
टूल, New-SelfSignedCertificate cmdlet के विपरीत, SAN और वाइल्डकार्ड प्रमाणपत्र जेनरेट नहीं कर सकता। यदि आप एक से अधिक नामों वाला प्रमाणपत्र बनाना चाहते हैं, तो DnsName पैरामीटर का पहला नाम प्रमाणपत्र के CN (सामान्य नाम) के रूप में उपयोग किया जाएगा। उदाहरण के लिए, आइए निम्नलिखित नामों से एक स्व-हस्ताक्षरित SAN प्रमाणपत्र बनाएं:
- विषय का नाम (सीएन):adfs1.contoso.com
- विषय वैकल्पिक नाम (डीएनएस):web_gw.contoso.com
- विषय वैकल्पिक नाम (डीएनएस):Enterprise_reg.contoso.com
प्रमाणपत्र बनाने का आदेश इस तरह दिखेगा:
नया-SelfSignedCertificate -DnsName adfs1.contoso.com,web_gw.contoso.com,enterprise_reg.contoso.com -CertStoreLocation cert:\LocalMachine\My
साथ ही, आप एक वाइल्डकार्ड . भी बना सकते हैं संपूर्ण डोमेन नाम स्थान के लिए प्रमाणपत्र। ऐसा करने के लिए, *.contoso.com . निर्दिष्ट करें सर्वर नाम के रूप में।
नया-स्व-हस्ताक्षरित प्रमाणपत्र-प्रमाणपत्रस्थान प्रमाणपत्र:\localmachine\my -dnsname *.contoso.com
Windows पर कोड साइनिंग के लिए स्व-हस्ताक्षरित प्रमाणपत्र जेनरेट करें
PoweShell 3.0 में, New-SelfSifgnedCertificate cmdlet केवल SSL प्रमाणपत्र जेनरेट करता है जिसका उपयोग ड्राइवर, एप्लिकेशन या स्क्रिप्ट कोड पर हस्ताक्षर करने के लिए नहीं किया जा सकता है (MakeCert उपयोगिता द्वारा जेनरेट किए गए प्रमाणपत्रों के विपरीत)।
PowerShell संस्करण 5.0 और बाद के संस्करण में, New-SelfSifgnedCertificate cmdlet के नए संस्करण का उपयोग अब कोड साइनिंग जारी करने के लिए किया जा सकता है प्रमाण पत्र।
स्व-हस्ताक्षरित एप्लिकेशन कोड हस्ताक्षर प्रमाणपत्र बनाने के लिए, कमांड चलाएँ:
$cert =New-SelfSignedCertificate -विषय "माई कोड साइनिंग सर्टिफिकेट" - टाइप कोड साइनिंग सर्टिफिकेट -CertStoreLocation cert:\LocalMachine\My
अब आप स्व-हस्ताक्षरित प्रमाणपत्र के साथ अपनी PowerShell स्क्रिप्ट पर हस्ताक्षर कर सकते हैं:
सेट-AuthenticodeSignature -FilePath C:\PS\my_posh_script.ps1 - $cert सर्टिफिकेट
अगर आपको अज्ञात त्रुटि मिल रही है कमांड निष्पादित करते समय चेतावनी, इसका मतलब है कि प्रमाणपत्र विश्वसनीय नहीं है, क्योंकि यह उपयोगकर्ता के व्यक्तिगत प्रमाणपत्र स्टोर में स्थित है।
आपको इसे विश्वसनीय रूट प्रमाणपत्र स्टोर में ले जाने की आवश्यकता है (अविश्वसनीय और संदिग्ध प्रमाणपत्रों के लिए समय-समय पर Windows प्रमाणपत्र रूट स्टोर को स्कैन करना न भूलें और विश्वसनीय रूट प्रमाणपत्रों की सूची को अपडेट करें)।
मूव-आइटम -पाथ $cert.PSPath -डेस्टिनेशन "सर्टिफिकेट:\CurrentUser\Root"
उसके बाद, आप इस स्व-हस्ताक्षरित प्रमाणपत्र के साथ अपनी PowerShell स्क्रिप्ट पर हस्ताक्षर कर सकते हैं।
विंडोज सर्वर IIS पर IIS में SHA-256 स्व-हस्ताक्षरित SSL प्रमाणपत्र का उपयोग करना
कृपया ध्यान दें कि इंटरनेट सूचना प्रबंधक कंसोल के माध्यम से IIS के लिए स्व-हस्ताक्षरित प्रमाणपत्र बनाते समय (स्व-हस्ताक्षरित प्रमाणपत्र बनाएं क्रिया मेनू आइटम), SHA-1 एन्क्रिप्शन एल्गोरिथम का उपयोग करके एक SSL प्रमाणपत्र बनाया जाता है। ऐसे प्रमाणपत्रों को कई ब्राउज़रों द्वारा अविश्वसनीय माना जाता है और सुरक्षित कनेक्शन स्थापित करने के लिए उपयोग नहीं किया जा सकता है (या आप अन्य एसएसएल त्रुटियां देख सकते हैं)। New-SelfSignedCertificate cmdlet आपको SHA-256 एन्क्रिप्शन एल्गोरिथम का उपयोग करके अधिक लोकप्रिय प्रकार का प्रमाणपत्र बनाने की अनुमति देता है।
आप Windows सर्वर पर किसी IIS साइट पर PowerShell से उत्पन्न स्व-हस्ताक्षरित SHA-256 प्रमाणपत्र को बाइंड कर सकते हैं। यदि आप PowerShell का उपयोग करके एक SSL प्रमाणपत्र बनाते हैं और उसे कंप्यूटर के प्रमाणपत्र स्टोर में रखते हैं, तो यह स्वचालित रूप से IIS साइटों के लिए उपलब्ध हो जाएगा।
IIS प्रबंधक कंसोल प्रारंभ करें, अपनी साइट चुनें, और फिर साइट बाइंडिंग . में विकल्प, आपके द्वारा बनाए गए प्रमाणपत्र का चयन करें और अपने परिवर्तन सहेजें।