使 用RDS(Remote Desktop Service,遠程桌面服務)服務,可以實現最基本的遠程控制操作,讓網管員可以輕松實現遠控操作。RDS可以為每個遠控用戶提供獨立的操作進。實際上,在Windows Server 2012中,RDS服務屬于微軟桌面虛擬化的基礎技術,并由此實現了桌面虛擬化和應用程序虛擬化,因此,RDS和RemoteAPP以及VDI是存在緊密聯系的。RDS服務可以在工作組或者域環境下運作,但是在兩種環境中,證書的配置是存在很大不同的。
為了更好地使用RDS服務,這里先簡單介紹一下RDS服務的相關組件。在Windows Server 2012中,RDS服務是由RD Web訪問、RD網關、RD授權、RD連接代理、RD虛擬化主機、RD會話主機等組件構成,其中的RD會話主機指的是承載應用程序或者遠程桌面程序的服務器,RD連接代理可以記錄客戶端的連接信息,RD Web訪問組件可以提供一個訪問接口,RD網關其實是一個反向代理。
在多臺RD會話主機的場景中,當客戶端訪問某臺RD會話主機上的程序時,如果出現中途異常斷開的情況,該用戶再次連接時,RD代理服務器會從自身的數據庫中查找該用戶上次的連接信息,將其自動導向之前連接的RD會話主機。這樣,可以保證該客戶端可以繼續操作RemoteAPP程序。在Windows Server 2012中已經取消了直接讓客戶端連接到RD會話主機的模式,只允許用戶通過RD Web訪問這一接口,來訪問RemoteAPP程序或者VDI遠程桌面。
在默認情況下,客戶端通過TCP 3389端口來訪問遠程桌面。存在多臺會話主機的情況下,客戶端會先訪問RD Web節后,之后再轉向目標RD會話主機。這就出現了一個問題,即單個3389端口處理多個Remote APP程序的映射比較繁瑣。RD網關的出現,有效解決了該問題,當客戶端訪問RemoteAPP程序時。首先連接RD網關,之后由其引導用戶連接到合適的RD會話主機,讓用戶順利訪問RemoteAPP程序,并由其處理客戶端和RD 會話主機的映射關系。當然,這會使用到TCP 443等端口。
在RDS服務中,證書是一個非常重要的對象。使用證書有兩個目的,不僅可以對用戶的遠程登錄進行認證,而且可以對數據的傳輸進行加密。對于RDS服務器來說,希望客戶端執行的是安全的連接。在工作組環境中,即RDS服務器和客戶端是獨立的,當客戶端執行“mstsc.exe”程序,輸入RDS服務器地址,連接完成后,在遠程桌面連接窗口中會顯示“無法驗證此遠程計算機的身份,是否仍要連接?”的提示,說明證書來自不信任的證書驗證機構。
以上情況說明,RDS服務器會創建自簽名證書,但自簽名證書默認是不受信任的,即在工作組環境中,證書的安全實際上沒有得到有效保證。但在域環境中情況則截然不同。例如,在域環境中,當客戶端登錄RDS服務器時,卻不會出現無法驗證連接者身份的警告窗口,在遠程桌面窗口頂部點擊鎖型按鈕,在彈出窗口中顯示“已使用Kerberos驗證遠程計算機的身份”信息。Kerberos是Windows活動目錄架構中用于身份驗證的加密協議,這說明該RDS連接是安全的。
如何在工作組環境中也能實現安全連接呢?在域中某服務器(例如名為“CAsrv“”)上打開服務器管理器,點擊“添加角色和功能”項,在向導界面中的角色列表中選擇“Active Directory證書服務”項,在下一步窗口中選擇“證書頒發機構”和“證書頒發機構Web注冊”項,當安裝該角色后,按照向導提示進行AD證書服務的配置操作,例如,修改CA的公用名稱等,一般來說采取默認值即可。打開證書頒發機構窗口,在左側選擇CA公用名稱,在其屬性窗口中的“擴展”面板中選擇以“https://”起始的一行,選擇“包括在CRL中。客戶端用它來尋找增量的位置”,“包含在頒發的證書的CDP擴展中”,“包含在已發布的CRL的IDP擴展中”項,點擊應用按鈕,重啟AD證書服務。
在左側的“吊銷的證書”項的右鍵菜單上點擊“所有任務→吊銷發布”項,點擊確定按鈕。在RDS服務器上打開瀏覽器,訪問“http://CAsrv.xxx.com/certsrv”,輸入合適的域賬戶名和密碼,在歡迎頁面中點擊“下載CA證書,證書鏈或CRL”鏈接,在打開頁面中點擊“下載證書鏈”鏈接,將后綴為“.p7b”的文件保存到本地,假設為名“xinren.p7b”,這是一張信任證書。
打開MMC控制臺,點擊“Ctrl+M”鍵,在打開窗口左側選擇“證書”項,點擊添加按鈕,選擇“計算機賬戶”項,在控制臺左側選擇“證書→受信任的證書頒發機構→證書”項,在右鍵菜單上點擊“所有任務→導入”項,在向導界面中選擇上述“xinren.p7b”文件,依次點擊“下一步”和“完成”按鈕,將其添加到收信人的根證書頒發機構列表中。在客戶端執行同樣的操作,使其信任根證書頒發機構。當信任了證書頒發機構后,接下來需要申請證書。
在RDS服務器安裝好IIS之后,在IIS管理器中打開服務器證書窗口,因為是在工作組環境中申請證書,所以點擊“創建證書申請”鏈接,在操作向導(如圖1)中輸入證書的通用名稱(輸入 RDS主機名)、組織、組織單元、城市/地點、省/市/自治區、國家/地區等信息,點擊“下一步”按鈕,選擇加密服務提供程序和位長信息,一般來說保持默認即可。在下一步窗口中點擊瀏覽按鈕,選擇申請文件保存路徑,點擊“完成”按鈕,就得到了所需的申請文件。這其實是一個文本文件,使用記事本可以查看其內容,并將其內容完整復制到剪切板中。
之后打開瀏覽器,訪問“http://CAsrv.xxx.com/certsrv”,在彈出頁面中點擊“申請證書”鏈接,之后點擊“高級證書申請”鏈接,在打開頁面中點擊“使用Base64編碼的CMC或PKCS#10文件提交 一個證書,或使用Base64編碼的PKCS#7續訂證書申請”鏈接,在打開頁面中的“保存的申請”欄中粘貼申請文件內容,在“證書模板”列表中選擇“Web服務器”。點擊“提交”按鈕,在證書已頒發頁面中點擊“下載證書”鏈接,將證書文件下載到本地。之后,在IIS管理器中的“服務器證書”窗口右側點擊“完成證書申請”鏈接,在彈出窗口中的“包含證書頒發機構相應的文件名”欄點擊“瀏覽”按鈕,選擇上述證書文件,設置易于記憶的名稱,選擇證書存儲位置,點擊“確定”按鈕,就完成了該證書的創建操作。

圖1 申請證書

圖2 查看證書的指紋信息
如何將該證書綁定到RDS服務上呢?這需要使用命令行實現。打開申請到的證書的屬性窗口,在“詳細信息”面板(如圖2)中點擊“指紋”項,可以看到指紋信息。在CMD窗口中執行“wmic /namespace:\rootcimv2TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="xxxxxxxxx"”命令,當出現“屬性更細成功”的提示,說明完成證書的綁定操作。其中的“xxxxxxxxx”表示證書的指紋信息。這樣,在工作組環境中,當客戶端連接RDS服務器時,就可以利用該證書實現安全連接了。
客戶端需要使用RDS服務器名進行連接,才可以依靠證書實現安全連接。可以在客戶端打開“C:WindowsSystem32DriversEtc”目錄,編輯其中的“hosts”文件,在其中添加RDS名稱和IP對應關系,實現簡單的DNS解析功能,就可以使用RDS名稱連接RDS服務器了。但是,如果使用RDS服務器的IP進行連接,就會出現上述無法信任的問題。因為證書是和RDS主機名綁定的,這是證書的特點之一。應該說同域環境相比,在工作組中環境中配置和管理證書是比較繁瑣的。