Nginx で Let’s Encrypt 使う時の設定

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
Nginx で Let’s Encrypt 使う時の設定