土. 10月 8th, 2022

はじめに

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