ひと昔前は「ベリサインでSSLサーバ証明書を取るなら年間数万円かかる」というのが
常識でした。今でも数万円かかるサービスは残ってますが、個人的には「Rapid-SSL」辺りが
5000円程度のサーバ証明書を対応し始めてからSSLが非常に導入しやすくなったと思います。
そして「KingSSL」は900円。一体何が起きてたのかとポルナレフ状態ですが、
ついに無料のサーバ証明書が出てきました。それが「Let’s Encrypt」です。
詳しくはこちら辺りをご覧頂きたいのですが、ポイントとしては「Let’s Encrypt の基本方針」にも書いてある通り、特に「無料」と「運用自動化」というのが素晴らしいです。
では早速導入してみましょう。環境は「CentOS6/apache」です。
参考サイト:https://letsencrypt.jp/usage/
まずはEPELリポジトリを有効にして、指定URLから「certbot-auto」をwgetでダウンロード。
実行権限を付けた後、指定パラメータを渡して実行します。
※パラメータの詳細はこちら
# yum install epel-release # cd # wget https://dl.eff.org/certbot-auto # chmod a+x certbot-auto # ./certbot-auto certonly --webroot -w /var/www/vhosts/memento-mori.jp/html/ -d memento-mori.jp --email le@memento-mori.jp
正常終了すると、「/etc/letsencrypt/live/memento-mori.jp/」下に証明書関連ファイルが自動作成されます。ちなみにwebrootプラグインによる認証を行っているため、ドキュメントルートに.htaccessを置いてIP制限していると認証に失敗したので一時的に無効にしました。
ファイル名 | 説明 |
---|---|
cert.pem | SSL/TLSサーバ証明書(公開鍵を含む)のみ(中間証明書などは含みません) |
privkey.pem | SSL/TLSサーバ証明書の公開鍵に対応する秘密鍵 |
chain.pem | 中間証明書(SSL/TLSサーバ証明書の内容は含まれていません) |
apacheのssl.confの場合、以下のように設定する事でサーバ証明書の対応は完了です。
※webサーバの再起動を忘れないように
SSLCertificateFile /etc/letsencrypt/live/memento-mori.jp/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/memento-mori.jp/privkey.pem SSLCACertificateFile /etc/letsencrypt/live/memento-mori.jp/chain.pem
一般的なサーバ証明書の有効期間は1年ですが、「Let’s Encrypt」の有効期間は90日ですので、
1~2か月くらいの頻度で定期的に更新した方が良いです。
やり方は「certbot-auto renew –force-renew」を行って証明書を更新した後にwebサーバを
再起動するだけですが、webサーバの再起動を定期的に自動起動するのはやや恐ろしいので
今回は証明書の更新のみ行う事にします。まずはテスト用に「–dry-run」オプションを付けます。
/root/certbot-auto renew --force-renew --dry-run
問題がなさそうならcronに以下を登録して更新を自動化します。(毎月1日の0時0分に起動)
00 00 01 * * /root/certbot-auto renew --force-renew