したがって、Windows Server 2012のリリースでは、古いリモートデスクトップ関連の構成ユーティリティの多くが削除されています。特に、RDSHが使用するカスタム証明書を構成できるRDP-Tcpプロパティダイアログにアクセスできるようにするリモートデスクトップセッションホストの構成ユーティリティはもうありません。その代わりに、新しいサーバーマネージャーの「展開プロパティの編集」ワークフロー全体の一部である、素晴らしい新しい統合GUIがあります。問題は、リモートデスクトップサービスの役割がインストールされている場合にのみ、ワークフローにアクセスできることです(私が知る限り)。
これは、Microsoft側の見落としのようです。リモートデスクトップサービスの役割を不必要にインストールせずに、既定のリモート管理モードで実行しているWindows Server 2012でRDPのカスタムSSL証明書を構成するにはどうすればよいですか?
RDSHの構成データの多くは、WMIのWin32_TSGeneralSetting
クラスのroot\cimv2\TerminalServices
名前空間に格納されていることがわかります。特定の接続用に構成された証明書は、SSLCertificateSHA1Hash
というプロパティのその証明書のThumbprint値によって参照されます。
PDATE:これは、コンピューターの個人ストアにある最初のSSL証明書の拇印を取得して設定する一般的なPowershellソリューションです。システムに複数の証明書がある場合、gci
コマンドに-Filter
オプションを追加して、正しい証明書を参照していることを確認する必要があります。参考までに、元の回答はそのままにしておきます。
# 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"}
拇印の値を取得するには
これで拇印の値が得られたので、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"}
注:証明書は、コンピューターアカウントの「個人用」証明書ストアにある必要があります。
ライアンのソリューションを試すときに「無効なパラメーター」が表示される場合は、昇格したコマンドプロンプト(管理者として実行)を使用していることを確認してください。
サーバーに有効なクライアント証明書の使用を強制する方法はありますか? RDPクライアントから、無効な証明書を無視するように選択できるようです。証明書が無効な場合にクライアントが接続できないようにしたい。
domain.pfx
と、txtファイルのフィンガープリントSSLCertificateSHA1Hash.txt
が必要です。
次に、これをCMDで実行します。
pushd %~dp0
cls
::FreeSoftwareServers.com
certutil.exe -p "" -importpfx "%~dp0domain.pfx"
set /p FingerPrint=<"%~dp0SSLCertificateSHA1Hash.txt"
wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="%FingerPrint%"
icacls.exe "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\*" /grant "NETWORK SERVICE":R
shutdown /r /t 5