Ubuntu 22.04 + Nginx + CloudflareでLet's Encryptのワイルドカード証明書を取得した時の備忘録

2025年2月22日土曜日

ryuzu2048.github.io

前提条件

  • Ubuntu22.04
  • Nginxインストール済み
  • ドメイン取得済み
  • ネームサーバー
    • NSレコードにCloudflareを登録済み

方法

パッケージ更新

$ sudo apt update
$ sudo apt upgrade

snapd

インストールをしていない場合

$ sudo apt install snapd

インストールをしている場合

$ sudo snap install core
$ sudo snap refresh core

Certbotのインストール

ここからCertbotをインストールする。

過去にsnapd以外(aptやdnfなど)からインストールした場合は、削除しなればならない

以降は、削除した前提で書く。

$ sudo snap install --classic certbot

シンボリックリンクの作成

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

certbotのsnapパッケージの設定を変更する

$ sudo snap set certbot trust-plugin-with-root=ok

DNSプラグインをインストールする。

ここのDNSプラグインはCloudflareを使用する。

$ sudo snap install certbot-dns-cloudflare

CloudflareのAPI トークン発行

  1. API トークンに移動
  2. トークンを作成する
  3. カスタム トークンを作成する
  4. トークン名は、適当に命名
  5. アクセス許可
    1. ゾーン
    2. DNS
    3. 編集
  6. ゾーン リソース
    1. 包含
    2. 特定のゾーン
    3. 指定のドメインを選択する。
  7. 発行する。

トークンの保管場所と記述

フォルダ作成

$ mkdir -p ~/.secrets/certbot/

ファイル作成

$ nano ~/.secrets/certbot/cloudflare.ini

~/.secrets/certbot/cloudflare.iniに以下の内容を書く

Cloudflareで登録済みのトークンのみ書き換えること

dns_cloudflare_api_token = Cloudflareで登録済みのトークン

権限変更

$ chmod 700 ~/.secrets/
$ chmod 700 ~/.secrets/certbot/
$ chmod 600 ~/.secrets/certbot/cloudflare.ini

Certbotを用いてワイルド証明書を取得する

ドメイン名を書き換える

以下のコマンドを実行すると対話式で質問されるので答える。

$ sudo certbot certonly \
    --dns-cloudflare \
    --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
    --dns-cloudflare-propagation-seconds 60 \
    -d ドメイン名 \
    -d *.ドメイン名

以下のCertificate is saved atKey is saved atの場所は必ずメモすること。

This certificate expires onの日付も覚えておくことを強くお勧めする

.
.
.
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/ドメイン名/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/ドメイン名/privkey.pem
This certificate expires on 2023-12-01.

Nginxのコンフィグに証明書を書く

コンフィグを開いて適当に書く。

書く内容は各自変わるはずである。

但し、コンフィグの場所や名前は変わる恐れがあるので事前に確認すること。

$ sudo nano /etc/nginx/conf.d/default.conf
server {
    listen              443 ssl;
    server_name         ドメイン名;
    ssl_certificate     /etc/letsencrypt/live/ドメイン名/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ドメイン名/privkey.pem;
    ...
}

書き終えたら次のコマンドで構成ファイルをテストする

$ sudo nginx -t

参考

このブログを検索

内部リンク集

外部リンク集

連絡フォーム

名前

メール *

メッセージ *

QooQ