CentOS6でのLet’s Encrypt設定方法

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
同じタグの記事: CentOS6
同じタグの記事: Let's Encrypt
同じカテゴリの記事: Linux