なんかてきとうに

わりと個人的な忘備録的ですよ。

Let's Encrypt を Windows Apacheで使ってみる。

無償で利用できるSSL証明書発行サービス Let's Encryptがpublic betaになったので試してみます。

なお、作業はWebサーバ上で行いましょう。

Windows用クライアントはletsencrypt-win-simple というのをgithubで公開されてる方がいますのでこれを利用しましょう。

IISなら何も考えずにいけるっぽいですが(IIS使ってないので知りません)。

何はともあれ、ダウンロードして解凍します。 別途.NetFramework4.0以上が必要なのでまだインストールしてなければインストールしておきましょう。

解凍して出てきたletsencrypt.exeを実行します。

Enter an email address (not public, used for renewal fail notices):

最初にこんな感じでE-mailを聞かれるのでちゃんと受け取れるメールアドレスを入力しましょう。

その後、

Do you agree to https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf? (Y/N)

利用規約に同意しますか?と聞かれますので、読んで問題なければYと入力し、同意しましょう。

Scanning IIS 7 Site Bindings for Hosts
 IIS Version not found in windows registry. Skipping scan.
No targets found.

 M: Generate a certificate manually.
 A: Get certificates for all hosts
 Q: Quit
Which host do you want to get a certificate for:

あとはIISがないとこんな感じで、 手動で生成しますか?みたいなことを聞かれますので Mを入力して手動で証明書の生成を行うようにしましょう。

Enter a host name:

ドメイン名を入力して。

Enter a site path (the web root of the host for http authentication):

apacheの設定ファイルに記載されている DocumentRootを記載します。

すると、認証用のファイルがDocumentRoot以下に設置されて、向こうからそこにアクセスが来て、アクセスができれば 認証されて秘密鍵、公開鍵証明書、中間CA証明書が
c:\Users\user名\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org\
以下に現れます。
ドメイン名-key.pem
ドメイン名-crt.pem
ca-XXXXXXX.pem
あとはこれをapacheSSL設定に

SSLCertificateFile "path-to ドメイン名-crt.pem"
SSLCertificateKeyFile "path-to ドメイン名-key.pem"
SSLCertificateChainFile "path-to ca-XXXXXXX.pem"

とやってあげれば大丈夫です。 apacheを再起動してアクセスしてみましょう。