リモート管理モードのWindows Server 2012でRDPのカスタムSSL証明書を構成しますか?


52

そのため、Windows Server 2012のリリースでは、古いリモートデスクトップ関連の構成ユーティリティの多くが削除されました。特に、RDSHが使用するカスタム証明書を構成できるRDP-Tcpプロパティダイアログにアクセスできるリモートデスクトップセッションホスト構成ユーティリティはありません。その代わりに、新しいサーバーマネージャーの全体的な "配置プロパティの編集"ワークフローの一部である素晴らしい統合GUIがあります。問題は、リモートデスクトップサービスの役割がインストールされている場合にのみ、そのワークフローにアクセスできることです(私が知る限り)。

これは、Microsoft側の見落としのようです。リモートデスクトップサービスの役割を不必要にインストールせずに、既定のリモート管理モードで実行しているWindows Server 2012でRDPのカスタムSSL証明書を構成するにはどうすればよいですか?


回答:


80

RDSHの構成データの多くはWin32_TSGeneralSettingroot\cimv2\TerminalServices名前空間のWMI のクラスに格納されていることがわかります。特定の接続に構成された証明書は、というプロパティのその証明書のThumb印値によって参照されSSLCertificateSHA1Hashます。


UPDATE:ここでは一般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"}

thumb印値を取得するには

  1. 証明書のプロパティダイアログを開き、[詳細]タブを選択します
  2. print印フィールドまでスクロールし、スペースで区切られた16進文字列をメモ帳などにコピーします。
  3. 文字列からすべてのスペースを削除します。また、文字列の最初の文字の直前にコピーされることがある非ASCII文字を注意して削除する必要があります。メモ帳には表示されません。
  4. これは、WMIで設定する必要がある値です。1ea1fd5b25b8c327be2c4e4852263efdb4d16af4のようになります。

thumb印の値を取得したので、次の1行で、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"}

注:証明書は、コンピューターアカウントの「個人用」証明書ストアに存在する必要があります。


3
これが純粋なメルトダウンから私を救ったことを付け加えたかっただけです。ありがとうございました。technetなどで提案されている役割のインストールとサーバーの再起動はばかげています。それでも、RDゲートウェイマネージャーにSSL証明書をインストールすると、リモート管理ログインに引き継がれません。
パパ14

2
これをどうもありがとう。これを見つける前に、すべてのグーグルを検索なければなりません。「ロールと機能の追加」を介して「リモートデスクトップサービス」をインストールするように指示する結果が多すぎますが、そうするにはドメインに参加する必要があります。
Sethi 14年

2
PSスクリプトを使用して実行しようとすると、「無効なパラメーター」が表示されます。私も手動で行うと同じ問題
...-deed02392

1
秘密鍵を含む証明書再インポートするまで、すべてのメソッドを使用して無効な引数を取得していました。単純な間違い。
トフィトメク

2
もう一度:D実行中にPowershellでも「パラメーターが無効です」というエラーが表示されますwmic。一番下のメモを見てください。証明書が個人ストアにもあることを確認してください。私は今度はウェブホスティングストアにい
セティ

4

Ryanのソリューションを試すときに「無効なパラメーター」が表示される場合は、必ず管理者特権でコマンドプロンプトを使用してください(管理者として実行)。


これに賛成票がないとは信じられない!
エイドリアンゴドン

0

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.