Let’s EncryptでSSL証明書を無料で利用

Let’s EncryptでSSL証明書を無料で利用

lolipop等を利用していると無料でSSLを簡単に設定できますが、さくらのVPSで運用しているサイトも無料でSSL化したいという依頼があったため、Let’s Encryptの利用する

OSのバージョン

#cat /etc/redhat-release
CentOS release 6.7 (Final)

#python --version
Python 2.6.6

インストール手順

下記のコマンドを実行

sudo curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
sudo chmod 700 /usr/bin/certbot-auto

証明書の作成

ドメイン「sample.com」と仮定して作成します

sudo /usr/bin/certbot-auto certonly --webroot -w /var/www/html --email sample.com --debug -d sample.com

wオプションでドキュメントルートディレクトリを指定 。
完了すると下記のディレクトリに証明書が作成される

/etc/letsencrypt/live/sample.com/

証明書を設定

自分の場合はhttpd.conf に直接書きました

<VirtualHost *:443>
    ServerName sample.com
    DocumentRoot /var/www/html/
    # ...
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/sample.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/sample.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/sample.com/chain.pem

</VirtualHost>

でサーバー再起動で、適応は完了

sudo service httpd restart

最後に自動化の設定

証明書の有効期限は3ヶ月しかないが、下記のコマンドを叩けば有効期限が3ヶ月延長できる

usr/bin/certbot-auto renew --post-hook "sudo service httpd restart" 

あとはcronに期限前に実行するように登録すれば完了です。

今回は、VPSにcronがインストールされてなかったのでついでにインストール作業を行う

cronインストール

# インストール
yum -y install cronie-noanacron
# 起動
service crond start
# 自動起動設定
chkconfig crond on

あとは2ヶ月に1回実行に設定して完了

0 0 */2 * * root /usr/bin/certbot-auto renew --post-hook "sudo service httpd restart"

ちなみに、crontab -e は使わないことを習慣づけときたいので
※理由はcrontab -e 実行しようと思って、間違えてeの隣のrを打ってしまい、crontab -r が実行される危険性があるため -r ⇒cron 削除コマンド

/etc/cron.d

に適当なファイルを作成し、そこに記述します。

vi /etc/cron.d/letsencrypt

<編集>
0 0 */2 * * root /usr/bin/certbot-auto renew --post-hook "sudo service httpd restart"

テストのため、cron処理を3日後くらいに設定し、

# ログを確認
cat /var/log/cron |grep certbot

ログを確認し実行されて、証明書が更新されたことを確認してください

# 証明書の有効期限の確認
openssl x509 -noout -dates -in cert.pem