Let’s Encryptを導入してオレオレ証明書から卒業する

オレオレ証明書(自己署名証明書)では、ブラウザで検証できないためアドレスバーが赤くなります。グリーンにするためには、年額いくらでベリサインとかジオトラストとかにSSL証明書を発行してもらう必要があります。
個人的に構築したサイトがあるんですが特に気にならないし安くはないので放置していました。ただ、無料で発行してくれる「Let’s Encrypt」ができたので導入してみることにしました。

公式ページにコマンドが載っているのでこれを参考にしました。

テスト方法は2つ。ブラウザでアドレスバーがグリーンになること、以下のコマンドの結果が「0 (ok)」になること

確認用コマンド
openssl s_client -connect [調べたいドメイン]:443 -showcerts

結果:

導入前
Verify return code: 18 (self signed certificate)

導入後
Verify return code: 0 (ok)

### 「/usr/local/」に置きたかったのでルートになってます。
su
cd /usr/local/
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
### 僕の環境では、yumが実行されてちょっと時間がかかりました。
./letsencrypt-auto --help
### ドメインは1つ以上指定すれば問題ないと思います。
./letsencrypt-auto certonly --webroot -w [Apahceならドキュメントルート] -d [ドメイン] -d [ドメイン]

### コンソールの表示が変わってメールアドレスを入力
### 利用規約に同意するか聞かれるのでPDFを確認して問題なければ同意

### ドメイン名でディレクトリが出来ていれば成功
ls -l /etc/letsencrypt/archive/
ls /etc/letsencrypt/archive/[ドメイン名]/
cert1.pem  chain1.pem  fullchain1.pem  privkey1.pem

### Apacheの場合、ssl.conf に設定しなければ反映されないので修正(変更内容は以下の通り)
vi ssl.conf
< SSLCertificateFile /etc/letsencrypt/archive/[ドメイン名]/cert1.pem
---
> SSLCertificateFile /etc/httpd/conf/server.crt
114c114
< SSLCertificateKeyFile /etc/letsencrypt/archive/[ドメイン名]/privkey1.pem
---
> SSLCertificateKeyFile /etc/httpd/conf/server.key
124d123
< SSLCertificateChainFile /etc/letsencrypt/archive/[ドメイン名]/chain1.pem

### 設定を反映するためApacheを再起動
service httpd restart

### 導入後の内容と同じになれば完了
openssl s_client -connect [調べたいドメイン]:443 -showcerts

ちなみに有効期限は2016/03/06 現在で90日です。理由は証明書の有効期間が90日間な理由 - Let's Encrypt 総合ポータルを参照ください。
そのため公式ページにもあるようにシェルにしてcronで定期的に実行すると良いかと思います。

#!/bin/sh
if ! /usr/local/letsencrypt/letsencrypt-auto renew > /var/log/letsencrypt/renew.log 2>&1 ; then
    echo Automated renewal failed:
    cat /var/log/letsencrypt/renew.log
    exit 1
fi
apachectl graceful