Using Free SSL/TLS Certificates from Let’s Encrypt with NGINX
これに比べると Caddyを使う場合 が簡単すぎて泣ける。
追記
と思っていたが、 Let’s Encrypt は Certbot でものすごく簡単に設定できるようになった。
公式を見たら手順が分かりやすい。
インストール
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto
とすると、必要なものが全部インストールされる。
証明書の発行
Nginx の場合、
./path/to/certbot-auto certonly
で、聞かれることに答えていくと、自動的に認証されて証明書が発行される。
この時、証明書を取得するドメインの80番ポートが空いていることが必要で、 webroot を指定する必要があるので事前に調べておくと良い。
もしくは、Nginxなどを使わない場合、スタンドアロンで80番ポートをリッスンするHTTPサーバになって認証をしてくれる模様。
./path/to/certbot-auto certonly --standalone -d example.com -d www.example.com
Let’s Encrypt は認証用の情報を、証明書取得予定のドメインの80番ポートの特定URLにおいて、Let’s Encrypt本家からそのURLにアクセスしにきて、認証OKとなったら証明書を発行してくれる仕組みのよう。
Nginx の設定
例えばこの ecpplus.net ドメインの場合、デフォルトでは下記の場所に証明書が出来る。(発行時に標準出力されてるメッセージを見れば書いてある)
server {
listen 443 ssl http2;
server_name ecpplus.net;
ssl on;
ssl_certificate /etc/letsencrypt/live/ecpplus.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ecpplus.net/privkey.pem;
...
cron の設定
一応90日の有効期限があるが、注意書きに1日2回の更新で、分をランダムにするように。というのがおすすめされてるので、そのように設定する。更新の必要がないときは、何もしないって書いてあった。
21 */12 * * * /usr/local/bin/certbot-auto renew --quiet --no-self-upgrade
22 */12 * * * /etc/init.d/nginx reload