フリーの認証局Let’s Encryptで証明書を発行する

1. Let’s Encryptとcertbotの関係

Let’s Encryptは公式ページTOPにも記載されていますが認証局です。利用当初は把握できていなかったのですが、certbotは認証局から証明書を取得したり更新したりする作業を自動化するプログラムです。

2. インストール

Let’s Encryptは認証局ですので利用者が特に準備するものはありません。証明書を取得するプログラムであるcertbotをセットアップすれば証明書を取得することができます。尚,証明書を取得するためには予めドメインを取得、利用するサーバにドメイン名を割り当てておきます。
ここではubuntu,nginxのサーバにcertbotをインストールします。

WEBサーバを一時停止

port80,443 を利用しているとcertbotが動かないため、一時停止しておきます。

sudo systemctl stop nginx

インストール

certbotインストール

インストール方法にはapt等によるインストールとsnapによるインストールを選択できます。ここではsnapによるインストールを行います。特に要件が無ければ推奨手順に従うのが良いでしょう。

snapによる手順は以下から確認できます。

sudo apt update
sudo apt install snapd
sudo apt-get remove certbot
sudo snap install --beta --classic certbot
  • TCP 80,443 を他プロセスが利用していると動作しません。
  • DNSで登録ドメイン名が解決、実行サーバの到達性が確認できる必要がある。
sudo certbot --nginx
  • メールアドレス入力
  • ライセンス同意
  • EFFからのメール受信
  • ドメイン情報入力
  • プロンプトで選択すると、/etc/nginx/nginx.conf に記載しているコンフィグに設定が自動で追記されます。

コンフィグ修正(追記)

コンフィグ設定を手動で設定する場合は、以下を追記します。

https サイトコンフィグファイル

  ssl_certificate /etc/letsencrypt/live/[domainname]/fullchain.pem; # managed by Certbot
  ssl_certificate_key /etc/letsencrypt/live/[domainname]/privkey.pem; # managed by Certbot

http サイトコンフィグファイル

if ($host = [domainname]) {
   return 301 https://$host$request_uri;
} # managed by Certbot

http サイトコンフィグファイル

nginxとphpを再起動し、コンフィグを反映します。

sudo vi /etc/nginx/conf.d/https.conf
sudo ps aux | grep nginx
sudo kill [プロセスNo]
sudo systemctl start nginx
sudo systemctl start php7.4-fpm

証明書の定期更新設定

let’sencryptの証明書は90日で期限が切れるため、自動更新を設定しておきます。

//certbot renewが動作するかテスト
sudo certbot renew --dry-run

//certbot がcronに登録されているか確認する。記載なければ作成する。
sudo cat /etc/cron.d/certbot
   0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew

3. 参考URL

コメントを残す

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)