Ssl

在遠端管理模式下為 Windows Server 2012(及更高版本)上的 RDP 配置自定義 SSL 證書?

  • November 10, 2019

因此,Windows Server 2012 的發布刪除了很多舊的遠端桌面相關配置實用程序。特別是,沒有更多的遠端桌面會話主機配置實用程序可讓您訪問 RDP-Tcp 屬性對話框,讓您配置自定義證書以供 RDSH 使用。取而代之的是一個不錯的新合併 GUI,它是新伺服器管理器中整體“編輯部署屬性”工作流程的一部分。問題是,如果您安裝了遠端桌面服務角色(據我所知),您只能訪問該工作流程。

這似乎有點像微軟的疏忽。當 Windows Server 2012 在預設遠端管理模式下執行時,我們如何為 RDP 配置自定義 SSL 證書,而無需安裝遠端桌面服務角色?

事實證明,RDSH 的大部分配置數據都儲存在命名空間Win32_TSGeneralSetting中 WMI 的類中root\cimv2\TerminalServices。為給定連接配置的證書由名為 的屬性上的該證書的指紋值引用SSLCertificateSHA1Hash


**更新:**這是一個通用的 Powershell 解決方案,它在電腦的個人儲存中獲取並設置第一個 SSL 證書的指紋。如果您的系統有多個證書,您應該-Filter在命令中添加一個選項以gci確保您引用正確的證書。我已將原始答案完整保留在此下方以供參考。

# get a reference to the config instance
$tsgs = gwmi -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'"

# grab the thumbprint of the first SSL cert in the computer store
$thumb = (gci -path cert:/LocalMachine/My | select -first 1).Thumbprint

# set the new thumbprint value
swmi -path $tsgs.__path -argument @{SSLCertificateSHA1Hash="$thumb"}

為了獲取指紋值

  1. 打開證書的屬性對話框並選擇詳細資訊選項卡
  2. 向下滾動到指紋欄位並將空格分隔的十六進製字元串複製到記事本之類的內容中
  3. 從字元串中刪除所有空格。您還需要注意並刪除有時會在字元串中第一個字元之前被複製的非 ascii 字元。它在記事本中不可見。
  4. 這是您需要在 WMI 中設置的值。它應該看起來像這樣:1ea1fd5b25b8c327be2c4e4852263efdb4d16af4

現在您已經有了指紋值,下面是一個可用於使用 wmic 設置值的單行程式碼:

wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="THUMBPRINT"

或者,如果 PowerShell 是你的東西,你可以使用它來代替:

$path = (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'").__path
Set-WmiInstance -Path $path -argument @{SSLCertificateSHA1Hash="THUMBPRINT"}

**注意:**證書必須在電腦帳戶的“個人”證書儲存中。

引用自:https://serverfault.com/questions/444286