<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RDP &#8211; 楽しいブログ</title>
	<atom:link href="https://cs.machijun.net/tag/rdp/feed/" rel="self" type="application/rss+xml" />
	<link>https://cs.machijun.net/</link>
	<description>コンピュータ関連の記事を書いていこうかな</description>
	<lastBuildDate>Sat, 08 Dec 2018 15:24:01 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.2.15</generator>
	<item>
		<title>Let&#8217;s Encryptで作った証明書をリモートデスクトップの証明書に使う</title>
		<link>https://cs.machijun.net/set-rdp-cert-from-lets-encrypt.html</link>
				<pubDate>Thu, 06 Dec 2018 16:24:23 +0000</pubDate>
		<dc:creator><![CDATA[machijun]]></dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Let's Encrypt]]></category>
		<category><![CDATA[RDP]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[リモートデスクトップ]]></category>
		<category><![CDATA[証明書]]></category>

		<guid isPermaLink="false">https://cs.machijun.net/?p=8</guid>
				<description><![CDATA[はじめに リモートデスクトップで接続する際に、下記の警告...]]></description>
								<content:encoded><![CDATA[<h2>はじめに</h2>
<p>リモートデスクトップで接続する際に、下記の警告に遭遇することがよくあります。<br />
<img class="alignnone size-full wp-image-9 " src="https://imgcs.machijun.net/wp-content/uploads/2018/12/07012212/img_5c094cb494b5e.png" alt="" srcset="https://imgcs.machijun.net/wp-content/uploads/2018/12/07012212/img_5c094cb494b5e.png 461w, https://imgcs.machijun.net/wp-content/uploads/2018/12/07012212/img_5c094cb494b5e-300x240.png 300w" sizes="(max-width: 461px) 100vw, 461px" /><br />
ほとんどの人が無視して接続していると思いますが、なりすましに気づけないなど好ましい状態ではないのでLet&#8217;s Encryptで作った証明書を使ってエラーを出なくしましょう。</p>
<p><span id="more-8"></span><br />
</p>
<h2>証明書の入手</h2>
<p><a href="/lets-encrypt%e3%81%a7dns%e8%aa%8d%e8%a8%bc%e3%81%ab%e3%82%88%e3%82%8b%e3%83%af%e3%82%a4%e3%83%ab%e3%83%89%e3%82%ab%e3%83%bc%e3%83%89%e8%a8%bc%e6%98%8e%e6%9b%b8%e3%81%ae%e7%99%ba%e8%a1%8c/">こちら</a>を参考に入手してください。p12形式への変換も行い、そのファイルをWindowsへファイル転送しておいてください。<br />
＃上記ではワイルドカード証明書を作っていますが、通常の形式でも問題ありません。</p>
<h2>証明書のインポートと適用</h2>
<p>自動化も見据えてPowerShellでやってみます。</p>
<h3>PowerShellを管理者権限で起動</h3>
<p>スタートメニューでPowerShellを検索し、右クリック、「管理者として実行」で起動します。<br />
<img class="alignnone size-full wp-image-10 " src="https://imgcs.machijun.net/wp-content/uploads/2018/12/07012228/img_5c094cc4d204f.png" alt="" srcset="https://imgcs.machijun.net/wp-content/uploads/2018/12/07012228/img_5c094cc4d204f.png 262w, https://imgcs.machijun.net/wp-content/uploads/2018/12/07012228/img_5c094cc4d204f-88x88.png 88w" sizes="(max-width: 262px) 100vw, 262px" /></p>
<h3>証明書インポート</h3>
<p>以下のコマンドでインポートできます。<br />
&#8220;password&#8221;は証明書をp12形式にした際に指定したパスワードに置き換えてください。<br />
証明書ファイルのパスも実際のパスに置き換えてください。</p>
<pre class="brush: powershell; title: ; notranslate">
PS C:&gt; certutil -p password -importpfx .\certfile.p12
証明書 &quot;CN=*.example.com&quot; がストアに追加されました。

CertUtil: -importPFX コマンドは正常に完了しました。
</pre>
<h3>インポートした証明書をRDPで使うように設定する</h3>
<p>まずは、証明書のフィンガープリントを取得します。</p>
<pre class="brush: powershell; title: ; notranslate">
PS C:&gt; dir cert:\LocalMachine\My


    ディレクトリ: Microsoft.PowerShell.Security\Certificate::LocalMachine\My


Thumbprint                                Subject
----------                                -------
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  CN=*.example.com
</pre>
<p>上記のXXXXXX&#8230;の部分がフィンガープリントです。<br />
複数あるものは有効期限（NotAfter）が最大のものを選ぶ必要があります。<br />
上記の出力ではわからないので下記コマンドを使用してください。</p>
<pre class="brush: powershell; highlight: [8,11,17,20]; title: ; notranslate">
PS C:&gt; dir cert:\LocalMachine\My


    ディレクトリ: Microsoft.PowerShell.Security\Certificate::LocalMachine\My | Format-List

Subject      : CN=*.example.com
Issuer       : CN=Let's Encrypt Authority X3, O=Let's Encrypt, C=US
Thumbprint   : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
FriendlyName :
NotBefore    : 2018/07/16 10:04:30
NotAfter     : 2018/10/14 10:04:30
Extensions   : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, S
               ystem.Security.Cryptography.Oid...}

Subject      : CN=*.example.com
Issuer       : CN=Let's Encrypt Authority X3, O=Let's Encrypt, C=US
Thumbprint   : YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
FriendlyName :
NotBefore    : 2018/04/21 17:20:13
NotAfter     : 2018/07/20 17:20:13
Extensions   : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, S
               ystem.Security.Cryptography.Oid...}
</pre>
<p>使う証明書のフィンガープリントがわかったら、下記のコマンドを実行します。<br />
XXXXX&#8230;部分を上記で取得したフィンガープリントに置き換えて実行してください。</p>
<pre class="brush: powershell; highlight: [16,27]; title: ; notranslate">
PS C:&gt; $cert = @{SSLCertificateSHA1Hash=&quot;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&quot;}
PS C:&gt; $path = (Get-WmiObject -class &quot;Win32_TSGeneralSetting&quot; -Namespace root\cimv2\terminalservices -Filter &quot;TerminalName='RDP-tcp'&quot;).__path
PS C:&gt; Set-WmiInstance -Path $path -argument $cert
__GENUS                                : 2
__CLASS                                : Win32_TSGeneralSetting
__SUPERCLASS                           : Win32_TerminalSetting
__DYNASTY                              : CIM_ManagedSystemElement
__RELPATH                              : Win32_TSGeneralSetting.TerminalName=&quot;RDP-Tcp&quot;
__PROPERTY_COUNT                       : 20
__DERIVATION                           : {Win32_TerminalSetting, CIM_Setting, CIM_ManagedSystemElement}
__SERVER                               : ServerName
__NAMESPACE                            : root\cimv2\terminalservices
__PATH                                 : \\ServerName\root\cimv2\terminalservices:Win32_TSGeneralSetting.TerminalN
                                         ame=&quot;RDP-Tcp&quot;
Caption                                :
CertificateName                        : *.example.com
Certificates                           : {0, 0, 0, 0...}
Comment                                :
Description                            :
InstallDate                            :
MinEncryptionLevel                     : 3
Name                                   :
PolicySourceMinEncryptionLevel         : 1
PolicySourceSecurityLayer              : 0
PolicySourceUserAuthenticationRequired : 0
SecurityLayer                          : 1
SSLCertificateSHA1Hash                 : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
SSLCertificateSHA1HashType             : 3
Status                                 :
TerminalName                           : RDP-Tcp
TerminalProtocol                       : Microsoft RDP 6.1
Transport                              : tcp
UserAuthenticationRequired             : 0
WindowsAuthentication                  : 0
</pre>
<p>出力結果のCertificateNameが設定した証明書であり、SSLCertificateSHA1Hashが先ほど取得したものであることを確認して終了です。</p>
<h2>おまけ1）RDPでどの証明書が使われているか確認</h2>
<p>リモートデスクトップで対象のサーバに接続します。<br />
全画面表示にした際にでてくる、上部のバーの鍵マークをクリックして出てくるダイアログBOXの証明書の表示をクリックします。</p>
<p><img class="alignnone size-full wp-image-11 " src="https://imgcs.machijun.net/wp-content/uploads/2018/12/07012243/img_5c094cd3d60dc.png" alt="" /><br />
<img class="alignnone size-full wp-image-12 " src="https://imgcs.machijun.net/wp-content/uploads/2018/12/07012250/img_5c094cda0ab27.png" alt="" srcset="https://imgcs.machijun.net/wp-content/uploads/2018/12/07012250/img_5c094cda0ab27.png 396w, https://imgcs.machijun.net/wp-content/uploads/2018/12/07012250/img_5c094cda0ab27-300x120.png 300w" sizes="(max-width: 396px) 100vw, 396px" /></p>
<h2>おまけ2）フィンガープリント確認と証明書適用を一緒にやる</h2>
<p>さらに自動化を見据えてこういう風に書けばコマンドの書き換え不要で流し込んで実行することができます。</p>
<pre class="brush: powershell; title: ; notranslate">
PS C:&gt; $cert = dir cert:\LocalMachine\My | 
 where{$_.Subject -match &quot;CN=\*.example.com$&quot; } |
 sort NotAfter -Des | Select -First 1 |
 Foreach{@{SSLCertificateSHA1Hash=$_.Thumbprint}}
PS C:&gt; $path = (Get-WmiObject `
-class &quot;Win32_TSGeneralSetting&quot; `
-Namespace root\cimv2\terminalservices  `
-Filter &quot;TerminalName='RDP-tcp'&quot;).__path 
PS C:&gt; Set-WmiInstance -Path $path -argument $cert
</pre>
<h2>参考リンク</h2>
<p>参考にさせていただきました。<br />
<a href="http://www.atmarkit.co.jp/ait/articles/1309/20/news036.html">http://www.atmarkit.co.jp/ait/articles/1309/20/news036.html</a></p>
]]></content:encoded>
										</item>
	</channel>
</rss>
