<?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>Let&#8217;s Encrypt &#8211; 楽しいブログ</title>
	<atom:link href="https://cs.machijun.net/tag/lets-encrypt/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>
		<item>
		<title>Let&#8217;s EncryptでDNS認証によるワイルドカード証明書の発行</title>
		<link>https://cs.machijun.net/get-wildcard-certificate-by-letsencrypt-using-dns.html</link>
				<pubDate>Thu, 06 Dec 2018 16:20:44 +0000</pubDate>
		<dc:creator><![CDATA[machijun]]></dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[DNS認証]]></category>
		<category><![CDATA[Let's Encrypt]]></category>
		<category><![CDATA[ワイルドカード証明書]]></category>
		<category><![CDATA[証明書]]></category>

		<guid isPermaLink="false">https://cs.machijun.net/?p=5</guid>
				<description><![CDATA[はじめに Let&#8217;s EncryptでDNS...]]></description>
								<content:encoded><![CDATA[<h2>はじめに</h2>
<p>Let&#8217;s EncryptでDNS認証を用いてワイルドカード証明書を発行します。<br />
発行に使ったOSはCentOS7( CentOS Linux release 7.4.1708 (Core) )です。</p>
<p><span id="more-5"></span><br />
</p>
<h2>certbotのインストール</h2>
<p><a href="https://letsencrypt.jp/usage/install-certbot.html#CentOS7" target="_blank" rel="noopener">公式</a>にあるとおり、yumコマンドで簡単にインストールできます。</p>
<pre class="brush: bash; title: ; notranslate">
[user@websv1 ~]$ sudo yum install epel-release
[user@websv1 ~]$ sudo yum install certbot
</pre>
<h2>証明書発行</h2>
<p>開始する前に、以下を準備してください。<br />
・メールアドレス（有効期限が近付いた際に通知が来ます）<br />
・DNSの管理アクセス権（当たり前ですが、DNSにレコード登録できないとこの手順は実行できません）</p>
<p>以下のコマンドを打ちます。<br />
メールアドレスとドメインは正しいものに書き換えて実行してください。</p>
<pre class="brush: bash; title: ; notranslate">
[user@websv1 ~]$ sudo certbot certonly \
 --manual \
 --server https://acme-v02.api.letsencrypt.org/directory \
 --email example@example.com \
 --agree-tos \
 --manual-public-ip-logging-ok \
 --preferred-challenges dns \
 --domain *.example.com
</pre>
<pre class="brush: bash; title: ; notranslate">
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for example.com

-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:

sQYXginymMXXXXXXXXXXXXXg8RFjTQ

Before continuing, verify the record is deployed.
-------------------------------------------------------------------------------
Press Enter to Continue
</pre>
<p>ここで、Enterを押す前に指定されたレコードをDNSに登録します。<br />
この例では[_acme-challenge]というTXTレコードを[example.com]に作ってください。<br />
レコードに指定された「sQYXginy&#8230;.」という値を登録します。</p>
<p>反映に時間がかかるかもしれないので、少し待ってからEnterを押してください。</p>
<pre class="brush: plain; title: ; notranslate">
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2018-07-20. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   &quot;certbot renew&quot;
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le
</pre>
<p>/etc/letsencrypt/live/example.com/ に作成された証明書と秘密鍵があります。</p>
<h2>おまけ）p12形式への変換</h2>
<p>WindowsやIISで使うために、p12形式に変更します。<br />
・opensslが入っていなければyumでインストールしてください。<br />
・/etc/letsencrypt/live/example.com/　への読み書き権限のあるユーザで作業してください。</p>
<pre class="brush: bash; title: ; notranslate">
[user@websv1 ~]$ cd /etc/letsencrypt/live/example.com/
[user@websv1 example.com] openssl pkcs12 -export -out certfile.p12 -in cert.pem -inkey privkey.pem
Enter Export Password: (任意のパスワードを入力)
Verifying - Enter Export Password: (再度上記と同じパスワードを入力)
</pre>
<p>これで、/etc/letsencrypt/live/example.com/にcertfile.p12ができました。</p>
]]></content:encoded>
										</item>
	</channel>
</rss>
