「Let’s Encrypt の使い方 – Let’s Encrypt 総合ポータル」を参考にしながら、Let’s Encryptの設定方法を調べてみました。インストールするところは、スクリプトを用意して対応できます。
例えば、次のような内容の install_lets_encrypt.sh を用意します。
domain="www.example.jp"
webroot="/var/www/sites/${domain}/htdocs"
d="/usr/local/certbot"
f="certbot-auto"
dl_url="https://dl.eff.org/${f}"
cmd="${d}/${f}"
if [ ! -e ${d} ]; then
sudo mkdir -p ${d}
fi
sudo wget -O ${cmd} ${dl_url}
sudo chmod a+x ${cmd}
${cmd} certonly \
--webroot -w "${webroot}" \
-d ${domain} \
-m webmaster@${domain} \
--agree-tos
# for SELinux
semanage fcontext -a -t cert_t "/etc/letsencrypt(/.*)?"
restorecon -FR /etc/letsencrypt
下記でインストールができます。
$ sudo sh install_lets_encrypt.sh
生成された鍵ファイルを /etc/httpd/conf.d/ssl.conf で使うように指定します。手元の環境ではfullchain.pemは使わなくて良いようだったので指定してません。
SSLCertificateFile /etc/letsencrypt/live/www.example.jp/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.example.jp/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/www.example.jp/chain.pem
更新時は、コマンド実行部分を変更した update.sh を用意し、/usr/local/certbot/update.sh に置いたとします。
#!/bin/sh
domain="www.example.jp"
webroot="/var/www/sites/${domain}/htdocs"
d="/usr/local/certbot"
f="certbot-auto"
cmd="${d}/${f}"
${cmd} certonly \
-n \
--renew-by-default \
--webroot -w "${webroot}" \
-d ${domain}
if [ $? -eq 0 ]; then
/sbin/service httpd graceful
else
/bin/logger -p user.err "Let's Encrypt Certificate Renewal Failed: ${domain}"
fi
実行権を付与してから、crontabで /usr/local/certbot/update.sh を登録します。
$ sudo chmod 755 /usr/local/certbot/update.sh $ sudo crontab -e
内容は例えば、下記のような感じにします。
59 23 19 * * /usr/local/certbot/update.sh > /dev/null 2>&1