इस गाइड में, हम आपको दिखाएंगे कि Windows Server 2019/2016/2012 R2 पर चल रहे IIS वेब सर्वर पर किसी साइट के लिए फ्री TLS/SSL Let's Encrypt सर्टिफिकेट कैसे इंस्टॉल और बाइंड करें।
Let's Encrypt और Windows के लिए ACME क्लाइंट्स
एक वेबसाइट का TLS/SSL सर्टिफिकेट पब्लिक नेटवर्क पर ट्रांसफर किए गए यूजर डेटा को मैन-इन-द-मिडल (MITM) हमलों से बचाता है और डेटा अखंडता प्रदान करता है। गैर-लाभकारी सर्टिफिकेशन सेंटर Let's Encrypt आपको API का उपयोग करके HTTPS एन्क्रिप्शन के लिए फ्री X.509 एन्क्रिप्शन TLS सर्टिफिकेट स्वचालित रूप से जारी करने की अनुमति देता है। केवल डोमेन वैलिडेशन के लिए सर्टिफिकेट जारी किए जाते हैं जो 90 दिनों में समाप्त हो जाते हैं (एक सप्ताह में एक डोमेन के लिए 50 सर्टिफिकेट की सीमा है)। लेकिन आप सरल शेड्यूलिंग का उपयोग करके अपनी वेबसाइट के लिए SSL सर्टिफिकेट को स्वचालित रूप से नवीनीकृत कर सकते हैं।
सर्टिफिकेट को स्वचालित रूप से जारी करने के लिए Let's Encrypt API इंटरफेस को Automated Certificate Management Environment (ACME) API कहा जाता है। Windows सिस्टम के लिए ACME API क्लाइंट के 3 सबसे लोकप्रिय कार्यान्वयन हैं:
- Windows ACME Simple (WACS) - IIS पर चल रही वेबसाइटों में से एक का चयन करने, स्वचालित रूप से SSL सर्टिफिकेट जारी करने और इसे आपके IIS वेब सर्वर पर एक विशिष्ट साइट से बाइंड करने के लिए एक इंटरैक्टिव कमांड प्रॉम्प्ट टूल;
- Powershell ACMESharp मॉड्यूल - ACME API पर Let's Encrypt सर्वर के साथ बातचीत करने के लिए cmdlets की एक संख्या के साथ एक PowerShell लाइब्रेरी;
- Certify - ACME API का उपयोग करके SSL सर्टिफिकेट को इंटरैक्टिव रूप से प्रबंधित करने के लिए एक Windows ग्राफिकल टूल।
Windows Server पर IIS में Let's Encrypt TLS सर्टिफिकेट इंस्टॉल करने के लिए WACS क्लाइंट
Let's Encrypt से SSL सर्टिफिकेट प्राप्त करने का सबसे आसान तरीका कंसोल टूल Windows ACME Simple (WACS) का उपयोग करना है (पहले इस प्रोजेक्ट को LetsEncrypt-Win-Simple कहा जाता था)। यह एक सरल विज़ार्ड है जो आपको IIS पर चल रही वेबसाइटों में से एक का चयन करने, स्वचालित रूप से SSL सर्टिफिकेट जारी करने और इसे इससे बाइंड करने की अनुमति देता है।
मान लीजिए, आपके पास Windows Server 2016 पर चल रही एक IIS वेबसाइट है। आपका कार्य फ्री SSL सर्टिफिकेट का उपयोग करके वेबसाइट को HTTPS मोड पर स्विच करना है।
GitHub https://github.com/PKISharp/win-acme/releases से WACS क्लाइंट का नवीनतम रिलीज़ डाउनलोड करें (मेरे मामले में, यह संस्करण v2.0.10 है - फ़ाइल नाम win-acme.v2.0.10.444.zip है)।

ZIP आर्काइव को उस सर्वर पर निम्न डायरेक्टरी में निकालें जहां IIS इंस्टॉल है: c:\inetpub\letsencrypt
Win-Acme का उपयोग करने के लिए आपको .NET Framework 4.7.2 या उच्चतर इंस्टॉल करना होगा (आपका इंस्टॉल किया गया .NET Framework संस्करण कैसे जांचें?)।

उन्नत कमांड प्रॉम्प्ट खोलें, c:\inetpub\letsencrypt डायरेक्टरी पर जाएं और wacs.exe चलाएं। यह एक इंटरैक्टिव Let's Encrypt सर्टिफिकेट जनरेशन और IIS साइट से बाइंडिंग विज़ार्ड लॉन्च करेगा। जल्दी से एक नया सर्टिफिकेट बनाने के लिए, N: – Create new certificates (simple for IIS) चुनें।

इसके बाद, आपको सर्टिफिकेट प्रकार चुनने की आवश्यकता है। हमारे उदाहरण में, कई SAN (Subject Alternative Name) वाले सर्टिफिकेट का उपयोग करने की कोई आवश्यकता नहीं है, इसलिए बस आइटम 1. Single binding of an IIS site चुनें। यदि आपको वाइल्डकार्ड सर्टिफिकेट की आवश्यकता है, तो विकल्प 3 चुनें।
फिर यूटिलिटी IIS पर चल रही वेबसाइटों की सूची प्रदर्शित करती है और आपको सर्टिफिकेट जारी करने के लिए एक साइट चुनने के लिए प्रेरित करती है।

अपना ईमेल एड्रेस निर्दिष्ट करें जिस पर सर्टिफिकेट नवीनीकरण समस्याओं और अन्य महत्वपूर्ण संदेशों और दुरुपयोग के बारे में सूचनाएं भेजी जाएंगी (आप कॉमा से अलग किए गए कई ईमेल एड्रेस निर्दिष्ट कर सकते हैं)। उपयोग की शर्तों से सहमत होना बाकी है और Windows ACME Simple Let's Encrypt सर्वर से कनेक्ट होगा और आपकी वेबसाइट के लिए एक नया SSL सर्टिफिकेट स्वचालित रूप से जनरेट करने का प्रयास करेगा।

IIS के लिए SSL Let's Encrypt सर्टिफिकेट जनरेट करने और इंस्टॉल करने की प्रक्रिया पूरी तरह से स्वचालित है।
डिफ़ॉल्ट रूप से, डोमेन वैलिडेशन http-01 validation (SelfHosting) मोड में किया जाता है। ऐसा करने के लिए, आपके पास अपने वेब सर्वर को इंगित करने वाला एक डोमेन DNS रिकॉर्ड होना चाहिए। मैन्युअल मोड (पूर्ण विकल्प) में WACS चलाते समय, आप वैलिडेशन प्रकार चुन सकते हैं – 4 [http-01] Create temporary application in IIS (recommended)। इस मामले में, IIS वेब सर्वर पर एक छोटा एप्लिकेशन बनाया जाएगा जिसके माध्यम से Let's Encrypt सर्वर डोमेन वैलिडेशन कर सकेंगे।
नोट. TLS/HTTP वैलिडेशन के दौरान, आपकी साइट अपने पूर्ण DNS नाम से इंटरनेट पर HTTP (80/TCP) और HTTPS (443/TCP) प्रोटोकॉल पर पहुंच योग्य होनी चाहिए।
WACS टूल सर्टिफिकेट की प्राइवेट की (*.pem), सर्टिफिकेट, और कई अन्य फ़ाइलों को C:\Users\%username%\AppData\Roaming\letsencrypt-win-simple में सेव करता है। फिर यह पृष्ठभूमि में जनरेट किए गए Let's Encrypt SSL सर्टिफिकेट को इंस्टॉल करेगा और इसे आपकी IIS साइट से बाइंड करेगा। यदि साइट पर पहले से कोई SSL सर्टिफिकेट इंस्टॉल है (उदाहरण के लिए, सेल्फ-साइन सर्टिफिकेट), तो इसे नए से बदल दिया जाएगा।
IIS Manager में, अपनी वेबसाइट के लिए Site Binding सेटिंग्स खोलें और सत्यापित करें कि यह Let's Encrypt Authority X3 द्वारा जारी सर्टिफिकेट का उपयोग करता है।

यदि आपके पास अपडेटेड Windows Trusted Root Certification Authorities हैं, तो यह सर्टिफिकेट आपके कंप्यूटर पर विश्वसनीय दिखाई देगा।
आप Let's Encrypt IIS सर्टिफिकेट को कंप्यूटर सर्टिफिकेट स्टोर में Web Hosting -> Certificates के तहत पा सकते हैं।

Windows ACME Simple Windows Task Scheduler में एक नई जॉब बनाता है (win-acme-renew (acme-v02.api.letsencrypt.org)) सर्टिफिकेट को स्वचालित रूप से नवीनीकृत करने के लिए। टास्क हर दिन शुरू होता है, और सर्टिफिकेट का नवीनीकरण 60 दिनों के बाद किया जाता है। यह टास्क कमांड चलाता है:
C:\inetpub\letsencrypt\wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org"
आप लेट्स एनक्रिप्ट सर्टिफिकेट को मैन्युअली अपडेट करने के लिए उसी कमांड का उपयोग कर सकते हैं।

IIS URL Rewrite का उपयोग करके HTTP से HTTPS पर रीडायरेक्ट
सभी इनकमिंग HTTP ट्रैफिक को HTTPS वेबसाइट URL पर रीडायरेक्ट करने के लिए, Microsoft URL Rewrite Module इंस्टॉल करें (https://www.iis.net/downloads/microsoft/url-rewrite), और सुनिश्चित करें कि साइट सेटिंग्स में Require SSL विकल्प अक्षम है। अब web.config में रीराइट नियमों के साथ रीडायरेक्ट कॉन्फ़िगर करें:
<system.webServer> <rewrite> <rules> <rule name=”HTTP to HTTPS Redirect” enabled=”true” stopProcessing=”true”> <match url=”(.*)” /> <conditions> <add input=”{HTTPS}” pattern=”off” ignoreCase=”true” /> </conditions> <action type=”Redirect” url=”https://{HTTP_HOST}/{R:1}” appendQueryString=”true” redirectType=”Permanent” /> </rule> </rules> </rewrite> </system.webServer>
आप IIS Manager GUI के माध्यम से URL Rewrite एक्सटेंशन का उपयोग करके ट्रैफिक रीडायरेक्ट भी कॉन्फ़िगर कर सकते हैं। Sites -> yoursitename -> URL Rewrite चुनें।

Add Rule -> Blank rule का उपयोग करके एक नया नियम बनाएं।
नियम का नाम निर्दिष्ट करें और निम्न पैरामीटर मान बदलें:
- Requested URL: Matches the Pattern
- Using: Regular Expressions
- Pattern: (.*)

Conditions सेक्शन में, Logical Grouping: Match All बदलें और Add पर क्लिक करें। निम्न सेटिंग्स निर्दिष्ट करें:
- Condition input: {HTTPS}
- Check if input string: Matches the Pattern
- Pattern: ^OFF$

अब Action ब्लॉक में चुनें:
- Action Type: Redirect
- Redirect URL: https://{HTTP_HOST}/{R:1}
- Redirect type: Permanent (301)
ब्राउज़र खोलें और HTTP एड्रेस से अपनी साइट खोलने का प्रयास करें; आपको स्वचालित रूप से HTTPS URL पर रीडायरेक्ट किया जाना चाहिए।
RDS गेटवे और वेब एक्सेस के साथ Let's Encrypt सर्टिफिकेट का उपयोग
यदि आप बाहरी उपयोगकर्ताओं को कॉर्पोरेट नेटवर्क से कनेक्ट करने के लिए RDS गेटवे या RDS वेब एक्सेस का उपयोग करते हैं, तो आप सेल्फ-साइन सर्टिफिकेट के बजाय Let's Encrypt से विश्वसनीय SSL सर्टिफिकेट का उपयोग कर सकते हैं। विचार करें कि Windows Server पर रिमोट डेस्कटॉप सेवाओं को सुरक्षित करने के लिए Let's Encrypt सर्टिफिकेट को सही तरीके से कैसे इंस्टॉल करें।
यदि RDSH भूमिका Remote Desktop Gateway सर्वर पर भी इंस्टॉल है, तो आपको गैर-एडमिन उपयोगकर्ताओं को उस डायरेक्टरी तक पहुंचने से रोकना होगा जिसमें WACS फ़ाइलें (मेरे उदाहरण में, c:\inetpub\letsencrypt) और Let's Encrypt सर्टिफिकेट और कुंजियां (C:\ProgramData\win-acme) संग्रहीत हैं।
फिर, ऊपर वर्णित अनुसार RD Gateway सर्वर पर wacs.exe चलाएं। वांछित IIS साइट चुनें (आमतौर पर यह Default Web Site होता है। Let's Encrypt आपको एक नया सर्टिफिकेट जारी करेगा और इसे IIS वेबसाइट से बाइंड करेगा, और स्वचालित सर्टिफिकेट नवीनीकरण टास्क टास्क शेड्यूलर में दिखाई देगा।
आप इस सर्टिफिकेट को मैन्युअली एक्सपोर्ट कर सकते हैं और SSL बाइंडिंग के माध्यम से इसे आवश्यक RDS सेवाओं से बाइंड कर सकते हैं। लेकिन आपको ये चरण हर 60 दिनों में मैन्युअली करने होंगे जब Let's Encrypt सर्टिफिकेट नवीनीकृत होता है।
हम Let's Encrypt सर्टिफिकेट अपडेट होने के बाद SSL सर्टिफिकेट को RDS गेटवे से स्वचालित रूप से बाइंड करने के लिए PowerShell स्क्रिप्ट का उपयोग कर सकते हैं।
win-acme प्रोजेक्ट में एक तैयार PowerShell स्क्रिप्ट है – ImportRDGateway.ps1 (https://github.com/PKISharp/win-acme/tree/master/dist/Scripts), जो आपको Remote Desktop Services के लिए चयनित SSL सर्टिफिकेट इंस्टॉल करने की अनुमति देती है। इस स्क्रिप्ट की मुख्य कमी यह है कि आपको नए सर्टिफिकेट का थंबप्रिंट मैन्युअली निर्दिष्ट करना होगा:
ImportRDGateway.ps1 <certThumbprint>
निर्दिष्ट IIS साइट से सर्टिफिकेट थंबप्रिंट को स्वचालित रूप से प्राप्त करने के लिए, संशोधित स्क्रिप्ट ImportRDGateway_Cert_From_IIS.ps1 (ImportRDGateway.ps1 पर आधारित) का उपयोग करें।
आप इस स्क्रिप्ट को मैन्युअली चला सकते हैं:
powershell -File ImportRDGateway_Cert_From_IIS.ps1
यदि आपका RDS गेटवे इंडेक्स 0 के साथ IIS "Default Web Site" पर चलता है, तो आप बिना किसी बदलाव के स्क्रिप्ट का उपयोग कर सकते हैं।
IIS पर साइट ID प्राप्त करने के लिए, PowerShell कंसोल खोलें और चलाएं:
Import-Module WebAdministration
Get-ChildItem IIS:Sites|ft -AutoSize
ID कॉलम आपकी साइट का इंडेक्स दिखाता है, इसमें से एक घटाएं। परिणामी इंडेक्स को PowerShell स्क्रिप्ट की लाइन 27 में 0 के बजाय निर्दिष्ट किया जाना चाहिए:
$NewCertThumbprint = (Get-ChildItem IIS:SSLBindings)[0].Thumbprint

अब win-acme-renew शेड्यूलर टास्क खोलें, और Actions टैब पर एक नया टास्क जोड़ें जो SSL सर्टिफिकेट अपडेट होने के बाद ImportRDGateway_Cert_From_IIS.ps1 स्क्रिप्ट चलाता है।
PowerShell एक्जीक्यूशन पॉलिसी बदलने से बचने के लिए, आप स्क्रिप्ट को कमांड के साथ चला सकते हैं:
PowerShell.exe -ExecutionPolicy Bypass -File c:\inetpub\letsencrypt\ImportRDGateway_Cert_From_IIS.ps1

अब SSL सर्टिफिकेट को RDS से बाइंड करने की स्क्रिप्ट Let's Encrypt सर्टिफिकेट नवीनीकृत होने के तुरंत बाद निष्पादित की जाएगी। इस मामले में, RD Gateway सेवा निम्न कमांड के साथ स्वचालित रूप से पुनरारंभ होती है:
Restart-Service TSGateway
[alert] जब TSGateway सेवा पुनरारंभ होती है, तो सभी वर्तमान उपयोगकर्ता सत्र डिस्कनेक्ट हो जाते हैं, इसलिए सर्टिफिकेट नवीनीकरण टास्क की आवृत्ति को हर 60 दिनों में एक बार बदलने की सिफारिश की जाती है।[/alert]