Let's EncryptでSSL証明書を取得する - Ubuntu 20.04


はじめに

Ubuntu 20.04 + Let's Encrypt で、SSL証明書を取得するためのメモ。

環境

$ hostnamectl status
   Static hostname: ---
         Icon name: computer-vm
           Chassis: vm
        Machine ID: ---
           Boot ID: ---
    Virtualization: kvm
  Operating System: Ubuntu 20.04.2 LTS
            Kernel: Linux 5.4.0-72-generic
      Architecture: x86-64

インストール

1. certbot をインストール

$ sudo apt install certbot

2. SSL証明書の発行リクエスト

-d オプションの引数にSSL証明書を取得したいドメイン名を指定。
-w オプションの引数にドキュメントルートを指定。

$ sudo certbot certonly --webroot -w /usr/share/nginx/html -d blog.long-in.net

※上記は、ファイル認証の場合です。

3. Webサーバに設定

Webサーバの種類によって読み込むファイルが異なります。
ApacheとNginxの2つの場合は、以下のようになります。

Apache

SSLCertificateFile /etc/letsencrypt/live/blog.long-in.net/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/blog.long-in.net/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/blog.long-in.net/chain.pem

Nginx

ssl_certificate /etc/letsencrypt/live/blog.long-in.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blog.long-in.net/privkey.pem;

4. ssl_dhparam を設定

ssl_dhparam を設定することでより通信をセキュアにできます。下記コマンドでファイルを生成します。

$ sudo openssl dhparam -out dhparam.pem 4096

Nginx に設定する場合、下記設定を追記します。

ssl_dhparam "/etc/nginx/dhparam.pem";

5. SSL証明書の更新リクエスト

手動の場合は、下記を実行。

$ sudo certbot renew

CRON + Nginx の場合は、下記設定を /etc/crontabに追記。

0 22 1 * * root /usr/bin/certbot renew && nginx -t && nginx -s reload

以上、終わり。