WindowsServer2016でmod_mdを使ってLet’sEncryptでSSL証明書を設置する

TL;DR

Windows Server2016でLet’sEncryptを使うのに、mod_mdを使うと簡単にSSL証明書の認証まで出来て便利。

Environment

  • さくらのVPS for Windows
  • Windows Server2016
  • Apache2.4.30以降
  • mod_md
  • Let’s Encrypt

手順

httpd.confで下記をアンコメントする。

LoadModule ssl_module            modules/mod_ssl.so
LoadModule socache_shmcb_module  modules/mod_socache_shmcb.so
LoadModule watchdog_module       modules/mod_watchdog.so
LoadModule md_module             modules/mod_md.so

下記をhttpd.confへ追記する。
MDCertificateAuthority でv01を指定していると、ACMEv1は使えないエラーが出るので注意。v02を指定する。

MDBaseServer            on
MDCertificateProtocol   ACME
MDCAChallenges          http-01
MDDriveMode             auto
MDPrivateKeys           RSA 2048
MDRenewWindow           33%
MDStoreDir              md

MDCertificateAuthority  https://acme-v02.api.letsencrypt.org/directory
MDCertificateAgreement  https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf

MDomain www.example.com

Listen 443

<VirtualHost *:443>
  SSLEngine on
  ServerName www.example.com
  DocumentRoot "${SRVROOT}/htdocs"
</VirtualHost>

下記メールアドレスを変更する。
ここがexample.comのままだとエラーになる。

ServerAdmin 自分のメールアドレス

ここでApacheを2回再起動する。
1回目だけだと、エラーログに次回のApache再起動でと表示が出る。
ファイアウォールで443を開放して、ブラウザでアクセスできればOK。