Let's Encrypt
Ubuntu + Nginx + Cloudflareを利用する設定をしていきます。事前にNginxの設定が完了していることを前提とします。
Certbotのインストール
まずsnapdをインストールします。
sudo apt update
sudo apt install snapd
更新します。
sudo snap install core
sudo snap refresh core
パッケージマネージャで過去にインストールされたCertbotを削除する
sudo apt remove certbot
Certbotをインストールします。
sudo snap install --classic certbot
パスを通します。
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Cloudflare DNS Pluginのインストール
プラグインを信頼する設定をしてから、Cloudflare DNS Pluginをインストールします。
sudo snap set certbot trust-plugin-with-root=ok
sudo snap install certbot-dns-cloudflare
CloudflareのAPIキー発行
CloudflareのAPIトークンを発行します。 Cloudflareの管理画面右上のマイプロフィール→APIトークン→トークンを作成するをクリックします。 テンプレートから「ゾーンDNSを編集する」を選びます。 DNS:編集の権限を与えます。IPアドレスの制限も可能であれば設定します。 作成後表示されるトークンを保存します。必ずトークンのテストも行ってください。
mkdir ~/.secret
nano ~/.secret/cloudflare.ini
以下の内容を記述します。
dns_cloudflare_api_token="APIトークン"
権限を変更します。
chmod 600 ~/.secret/cloudflare.ini
証明書の取得
以下のコマンドを実行します。
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secret/cloudflare.ini \
--agree-tos \
--email support@naughty-ghost.tech \
-d example.com
以下の場所に証明書が保存されます。
/etc/letsencrypt/live/example.com/
証明書の削除
不要になった証明書を無効化した後、削除する場合
sudo certbot revoke --delete-after-revoke --cert-name example.com
自動更新
証明書の自動更新を行います。
sudo crontab -e
例として毎週日曜日に更新の確認を行います。
0 0 * * 0 certbot renew
Nginxに証明書を設定
証明書を設定します。
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
}
設定を反映します。
sudo nginx -t
sudo systemctl reload nginx
参考
Certbot Instructions | Certbot
更新履歴
- 新規作成。