Let’s Encryptの導入(CentOS6+apache)

無料で使えるSSL証明書であるLet’s Encryptを導入してみます。
既にhttpdとmod-sslはyumでインストール済みという前提です。

1. certbotをインストールする
EPELが必要なので、未導入の場合は一緒に導入しておきます

# yum install epel-release
# yum install certbot python-certbot-apache

2. 証明書の作成
certbotコマンド一発です。

# certbot certonly --webroot -w /var/www/html/ -d fizsoft.net

-w は対象サイトの物理パスを、-d はドメインを指定してください。
初回作成時はメールアドレスや規約の同意を求められますが、一通り入力しましょう。

3. 作成された証明書の確認
以下のパスにドメインごとのディレクトリが作成されていて、証明書や鍵の各種ファイルがあるはずです。

# ls -la /etc/letsencrypt/live/fizsoft.net/
合計 12
drwxr-xr-x 2 root root 4096 12月 29 16:21 2017 .
drwx------ 4 root root 4096  1月  4 12:59 2018 ..
-rw-r--r-- 1 root root  543 12月 29 16:21 2017 README
lrwxrwxrwx 1 root root   35 12月 29 16:21 2017 cert.pem -> ../../archive/fizsoft.net/cert1.pem
lrwxrwxrwx 1 root root   36 12月 29 16:21 2017 chain.pem -> ../../archive/fizsoft.net/chain1.pem
lrwxrwxrwx 1 root root   40 12月 29 16:21 2017 fullchain.pem -> ../../archive/fizsoft.net/fullchain1.pem
lrwxrwxrwx 1 root root   38 12月 29 16:21 2017 privkey.pem -> ../../archive/fizsoft.net/privkey1.pem

あとはこの証明書ファイルをapacheに設定します

4. apacheへのSSL証明書設定

# vi /etc/httpd/conf.d/ssl.conf

# 以下のディレクティブに先程のファイルを指定します
SSLCertificateFile /etc/letsencrypt/live/fizsoft.net/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/fizsoft.net/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/fizsoft.net/chain.pem

VirtualHostを設定している場合はVirtualHostディレクティブ内でSSLの設定が必要になります

5. apacheを再起動してアクセス確認
正しく設定されていれば、httpsでのアクセスが可能になっているはずです。
443ポートでListenしていること、iptables等で443ポートの通信を許可していることを確認してください。

6. 証明書の自動更新設定
Let’s Encryptの証明書有効期限は90日と短めなので、毎月自動で更新チェックを行うように設定しておきます。

# crontab -l
0 4 1 * * /usr/bin/certbot-auto renew && service httpd reload

これで毎月1日の04:00に証明書の更新チェックを行います。
certbot-auto renewコマンドは手動でも実行できるので、一度実行してみてどのような動作をするか確認してみるのもいいですね。

無料でSSL証明書が使えるのは非常に便利ですね。
最近はiPhone向けコンテンツなどを始めSSL対応必須な場合もあるので、ありがたい仕組みです。