इस लेख में हम दिखाएंगे कि Active Directory डोमेन में Windows कंप्यूटर या सर्वर पर RDP कनेक्शन को सुरक्षित करने के लिए विश्वसनीय SSL/TLS प्रमाणपत्रों का उपयोग कैसे करें। हम डिफ़ॉल्ट सेल्फ-साइन RDP प्रमाणपत्रों के बजाय विश्वसनीय SSL प्रमाणपत्रों का उपयोग करेंगे (सेल्फ-साइन RDP प्रमाणपत्र का उपयोग करते समय, उपयोगकर्ता को होस्ट से कनेक्ट करते समय चेतावनी मिलती है कि प्रमाणपत्र विश्वसनीय नहीं है)। इस उदाहरण में, हम Certificate Authority में एक कस्टम RDP प्रमाणपत्र टेम्पलेट और एक Group Policy कॉन्फ़िगर करेंगे ताकि SSL/TLS प्रमाणपत्र को स्वचालित रूप से जारी किया जाए और Remote Desktop Services से बाइंड किया जाए।
रिमोट डेस्कटॉप कनेक्शन (RDP) सेल्फ-साइन प्रमाणपत्र चेतावनी
डिफ़ॉल्ट रूप से, RDP सत्र को सुरक्षित करने के लिए Windows एक सेल्फ-साइन प्रमाणपत्र जनरेट करता है। mstsc.exe क्लाइंट का उपयोग करके RDP/RDS होस्ट से पहली बार कनेक्ट होने पर, उपयोगकर्ता को निम्न चेतावनी दिखाई देती है:
The remote computer could not be authenticated due to problems with its security certificate. It may be unsafe to proceed. Certificate error: The certificate is not from a trusted certifying authority.
आगे बढ़ने और RDP कनेक्शन स्थापित करने के लिए, उपयोगकर्ता को Yes पर क्लिक करना होगा। हर बार RDP प्रमाणपत्र चेतावनी को प्रकट होने से रोकने के लिए, आप "Don’t ask me again for connections to this computer" विकल्प चेक कर सकते हैं।

इस मामले में RDP प्रमाणपत्र थंबप्रिंट क्लाइंट पर RDP कनेक्शन इतिहास के साथ रजिस्ट्री कुंजी के CertHash पैरामीटर में सहेजा जाता है (HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers\)। यदि आपने चेतावनी छिपाई है कि RDP सर्वर सत्यापित नहीं हो सका, तो सेटिंग्स रीसेट करने के लिए रजिस्ट्री से प्रमाणपत्र थंबप्रिंट हटाएं।

भले ही कनेक्शन स्थापित करने के लिए सेल्फ-साइन प्रमाणपत्र का उपयोग किया जाता है, आपका RDP सत्र सुरक्षित है और आपका ट्रैफिक एन्क्रिप्टेड है।
Certificate Authority (CA) में RDP प्रमाणपत्र टेम्पलेट बनाएं
आइए कॉर्पोरेट सर्टिफिकेट अथॉरिटी द्वारा जारी विश्वसनीय SSL/TLS प्रमाणपत्र का उपयोग करके RDP कनेक्शन को सुरक्षित करने का प्रयास करें। इस प्रमाणपत्र का उपयोग करके, उपयोगकर्ता कनेक्ट होने पर RDP सर्वर को प्रमाणित कर सकता है। मान लीजिए कि आपके डोमेन में एक कॉर्पोरेट Microsoft Certificate Authority पहले से तैनात है। इस मामले में, आप डोमेन में सभी Windows कंप्यूटर और सर्वर पर प्रमाणपत्रों को स्वचालित रूप से जारी करने और कनेक्ट करने के लिए कॉन्फ़िगर कर सकते हैं।
आपको अपने CA में RDP/RDS होस्ट के लिए एक नया प्रकार का प्रमाणपत्र टेम्पलेट बनाना होगा:
- Certificate Authority कंसोल चलाएं और Certificate Templates सेक्शन पर जाएं;
- Computer प्रमाणपत्र टेम्पलेट को डुप्लिकेट करें (Certificate Templates -> Manage -> Computer -> Duplicate);

- General टैब में, नए प्रमाणपत्र टेम्पलेट का नाम निर्दिष्ट करें – RDPTemplate. सुनिश्चित करें कि Template Name फील्ड में मान Template display name से मेल खाता है;

- Compatibility टैब में, अपने डोमेन में उपयोग किए जाने वाले न्यूनतम क्लाइंट संस्करण को निर्दिष्ट करें (उदाहरण के लिए, CA के लिए Windows Server 2008 R2 और आपके क्लाइंट के लिए Windows 7)। इस प्रकार, मजबूत एन्क्रिप्शन एल्गोरिदम का उपयोग किया जाएगा;
- फिर, Extensions टैब के Application Policy सेक्शन में, प्रमाणपत्र के उपयोग दायरे को केवल Remote Desktop Authentication तक सीमित करें (निम्न ऑब्जेक्ट पहचानकर्ता दर्ज करें — 1.3.6.1.4.1.311.54.1.2)। Add -> New पर क्लिक करें, एक नई पॉलिसी बनाएं और इसे चुनें;

- प्रमाणपत्र टेम्पलेट सेटिंग्स (Application Policies Extension) में, Remote Desktop Authentication को छोड़कर सभी पॉलिसी हटाएं;

- अपने डोमेन कंट्रोलर पर इस RDP प्रमाणपत्र टेम्पलेट का उपयोग करने के लिए, Security टैब खोलें, Domain Controllers ग्रुप जोड़ें और इसके लिए Enroll और Autoenroll विकल्प सक्षम करें;

- प्रमाणपत्र टेम्पलेट सहेजें;
- फिर Certificate Authority mmc स्नैप-इन में, Certificate Templates फोल्डर पर क्लिक करें और New -> Certificate Template to Issue -> चुनें जो आपने बनाया है (RDPTemplate);

Group Policy का उपयोग करके RDP SSL/TLS प्रमाणपत्र कैसे तैनात करें?
अब आपको एक डोमेन GPO कॉन्फ़िगर करने की आवश्यकता है ताकि कॉन्फ़िगर किए गए टेम्पलेट के अनुसार कंप्यूटर/सर्वर पर RDP प्रमाणपत्र स्वचालित रूप से असाइन हो जाएं।
माना जाता है कि सभी डोमेन कंप्यूटर कॉर्पोरेट Certificate Authority पर भरोसा करते हैं, यानी रूट प्रमाणपत्र GPO का उपयोग करके Trusted Root Certificate Authorities में जोड़ा गया है।
- Domain Group Policy Management कंसोल खोलें (gpmc.msc), एक नया GPO ऑब्जेक्ट बनाएं और इसे RDP/RDS सर्वर या कंप्यूटर वाले OU से लिंक करें ताकि RDP कनेक्शन को सुरक्षित करने के लिए TLS प्रमाणपत्र स्वचालित रूप से जारी किए जाएं;
- निम्न GPO सेक्शन पर जाएं Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Security. Server Authentication Certificate Template पॉलिसी सक्षम करें। पहले बनाए गए CA टेम्पलेट का नाम निर्दिष्ट करें (RDPTemplate);

- उसी GPO सेक्शन में, Require use of specific security layer for remote (RDP) connections पॉलिसी सक्षम करें और इसके लिए मान SSL सेट करें;

- RDP प्रमाणपत्र को स्वचालित रूप से नवीनीकृत करने के लिए, GPO के Computer configuration -> Windows settings -> Security Settings -> Public Key Policies सेक्शन पर जाएं और Certificate Services Client – Auto-Enrollment Properties पॉलिसी सक्षम करें। "Renew expired certificates, update pending certificates and remove revoked certificates" और "Update certificates that use certificate templates" विकल्प चेक करें;

- यदि आप चाहते हैं कि आपके क्लाइंट हमेशा RDP सर्वर प्रमाणपत्र को सत्यापित करें, तो आपको Configure Authentication for Client = Warn me if authentication fails पॉलिसी कॉन्फ़िगर करनी होगी (Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Settings -> Remote Desktop Connection Client);
- यदि आवश्यक हो, तो फायरवॉल पॉलिसी का उपयोग करके इनकमिंग RDP पोर्ट TCP/UDP 3389 खोलें;
- फिर क्लाइंट कंप्यूटर पर ग्रुप पॉलिसी सेटिंग्स अपडेट करें, कंप्यूटर सर्टिफिकेट कंसोल लॉन्च करें (
Certlm.msc) और सुनिश्चित करें कि आपके CA द्वारा जारी Remote Desktop Authentication प्रमाणपत्र Personal -> Certificates सेक्शन में दिखाई दिया है।
यदि नई Group Policy सेटिंग्स लागू नहीं हुई हैं, तो निदान के लिए gpresult टूल और इस लेख का उपयोग करें।

नए RDP प्रमाणपत्र को लागू करने के लिए, Remote Desktop Services को पुनरारंभ करें:
Get-Service TermService -ComputerName mun-dc01| Restart-Service –force –verbose
उसके बाद, RDP का उपयोग करके सर्वर से कनेक्ट होने पर, आपको विश्वसनीय RDP प्रमाणपत्र की पुष्टि करने का अनुरोध नहीं दिखाई देगा (अनुरोध देखने के लिए, FQDN के बजाय उसके IP पते का उपयोग करके उस सर्वर से कनेक्ट करें जिसके लिए प्रमाणपत्र जारी किया गया है)। View certificate पर क्लिक करें, Details टैब पर जाएं और Thumbprint फील्ड में मान कॉपी करें।

Certification Authority कंसोल के Issued Certificates सेक्शन में, आप सुनिश्चित कर सकते हैं कि विशिष्ट Windows सर्वर/कंप्यूटर के लिए एक RDPTemplate प्रमाणपत्र जारी किया गया है। साथ ही प्रमाणपत्र Thumbprint मान जांचें:

फिर इस थंबप्रिंट की तुलना Remote Desktop Service द्वारा उपयोग किए जाने वाले प्रमाणपत्र थंबप्रिंट से करें। आप RDS प्रमाणपत्र थंबप्रिंट का मान रजिस्ट्री में (HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations, TemplateCertificate पैरामीटर) या निम्न PowerShell कमांड का उपयोग करके देख सकते हैं:
Get-WmiObject -Class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices|select SSLCertificateSHA1Hash

फिर, किसी भी Windows होस्ट के रिमोट डेस्कटॉप से कनेक्ट होने पर, आपको अविश्वसनीय RDP प्रमाणपत्र की चेतावनी नहीं दिखाई देगी।
विश्वसनीय TLS प्रमाणपत्र थंबप्रिंट के साथ RDP फाइल पर हस्ताक्षर करना
यदि आपके पास CA नहीं है, लेकिन आप नहीं चाहते कि आपके उपयोगकर्ता RDP/RDS होस्ट से कनेक्ट होने पर चेतावनी देखें, तो आप उपयोगकर्ता कंप्यूटर पर प्रमाणपत्र को विश्वसनीय में जोड़ सकते हैं।
ऊपर वर्णित अनुसार RDP प्रमाणपत्र थंबप्रिंट का मान प्राप्त करें:
Get-WmiObject -Class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices|select SSLCertificateSHA1Hash
इस फिंगरप्रिंट का उपयोग RDPSign.exe टूल का उपयोग करके .RDP फाइल पर हस्ताक्षर करने के लिए करें:
rdpsign.exe /sha256 25A27B2947022CC11BAFF261234567DEB2ABC21 "C:\ps\mun-dc01.rdp"
फिर GPO का उपयोग करके इस थंबप्रिंट को उपयोगकर्ता कंप्यूटर पर विश्वसनीय प्रमाणपत्रों में जोड़ें। Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Settings -> Remote Desktop Connection Client में Specify SHA1 thumbprints of certificates representing trusted .rdp publishers पॉलिसी में थंबप्रिंट निर्दिष्ट करें (सेमीकोलन से अलग)।

पारदर्शी RDP लॉगऑन को पासवर्ड दर्ज किए बिना कॉन्फ़िगर करने के लिए (RDP Single Sign On), Allow delegation defaults credential पॉलिसी कॉन्फ़िगर करें और इसमें RDP/RDS होस्ट नाम निर्दिष्ट करें (इसे कैसे करें पर इस लेख को देखें)।