Let's Encrypt を自動更新するためのNginxの設定

example.com example.jpの2つのドメインをLet's Encrypt でtls 化しているとする。

ドメイン所有の確認の理由からPort80に設定を入れる。

nginx

Port 80 の設定

server {
  listen              80;
  server_name         example.com example.jp;
  location '/.well-known/acme-challenge' {
  default_type "text/plain";
    root        /tmp/letsencrypt-auto;
  }

  location / {
    return              301 https://$server_name$request_uri;
  }
}

自動更新 スクリプト

#!/bin/bash
DOMAINS="-d example.com -d example.jp"
DIR=/tmp/letsencrypt-auto
LETSENCRYPT="/PATH/TO/YOUR/letsencrypt-auto"
[ -d $DIR ] || mkdir -p $DIR
$LETSENCRYPT certonly --server https://acme-v01.api.letsencrypt.org/directory -a webroot --webroot-path=$DIR $DOMAINS --force-renew && service nginx reload

あとはこのスクリプトをcronなどに仕込む。

One-line certificate generation/renews with Letsencrypt and nginx · GitHub