はじめに
SSL証明書を無料で発行できる時代になった。Let’s enscryptを使えば証明書の有効期間が3ヶ月と極端に短いが、cronなどに仕込めば半永久的に利用が可能。
今回は、nginxへの組み込みも含めて紹介。
導入手順
1 つのドメインへの証明書登録の場合は非常にシンプル。
./certbot-auto certonly --no-self-upgrade -n --webroot --agree-tos --email tsukada@test.jp -w /usr/share/nginx/html/sumito -d sumito.jp
これだけで登録できる。
Let’s Encryptの証明書は、
-d
オプションでドメインを。
-w
オプションでディレクトリを指定することで複数ドメインを1証明書にまとめることができる。
以下3つのドメインを1証明書にまとめるとすると、
- tsukada.test.jp
- sumito.test.jp
- coco.test.jp
手順はこちら。
cd /usr/local/src git clone https://github.com/certbot/certbot cd certbot/ ./certbot-auto certonly --no-self-upgrade -n --webroot --agree-tos --email webadmin@test.jp -w /var/www/tsukada -w /var/www/sumito -d tsukada.test.jp -d sumito.test.jp -d coco.test.jp --expand
オプションについて
-w
-w
の部分はドキュメントルートを設定する。ドメイン毎に異なる場合は、-wを増やす。 -w /var/www/tsukada -w /var/www/sumito
-d
-d
は1枚の証明書に持たせるドメインを入れる場合は、同様に-dを増やす。 -d tsukada.test.jp -d sumito.test.jp
鍵の作成場所
以下のディレクトリに作成される
- /etc/letsencrypt/live/[URL]/fullchain.pem
- /etc/letsencrypt/live/[URL]/privkey.pem
nginxの設定
上記記載の通り、`/etc/letsencrypt/live/`に作成される。
nginx のserverの設定箇所のところに、以下のように設定することでnginxで証明書を有効化することができる。
server { listen 443 ssl; ssl_certificate /etc/letsencrypt/live/sumito.jp/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/sumito.jp/privkey.pem;
証明書の自動更新
cronを設定することで証明書の自動更新が可能。 証明書更新後、webサーバを再起動する必要がある。
0 10 1 * * /usr/local/src/certbot/certbot-auto renew --force-renew && systemctl restart nginx
参考情報
15秒でわかるLet’s Encryptのしくみ~無料で複数ドメイン有効な証明書作成~ https://qiita.com/S-T/items/7ede1ccfae6fc7f08393