こちらの記事を2025年版に対応すると共に、改めて、「証明書の発行」に絞った形です。

期せずして新たなドメインが取得できたので、こちらのワイルドカード証明書をLet's Encryptで作っていきます。

環境

  • Ubuntu 24.04

前提条件

  • 取得したドメインへのDNSが設定できること。
  • Let's Encryptが取得できていること
  • 備考として、別サーバでも配布しやすいように、オリジナルの/etc/letsencrypt/live/ではなく、任意の作業ディレクトリに証明書一式を保存する運用を行っています。

実施手順

サーバにターミナル接続して実施します。

root昇格

sudo su -

作業ディレクトリ作成

  • ディレクトリ作成
mkdir /hoge/bbb.jp_ssl$(date +%Y%m)
  • ディレクトリ移動
cd /hoge/bbb.jp_ssl$(date +%Y%m)

証明書発行

certbot certonly --manual \
    --preferred-challenges dns \
    --server https://acme-v02.api.letsencrypt.org/directory \
    -m あなたの有効なメールアドレス@example.com \
    -d "*.bbb.jp" \
    -d "bbb.jp"
  1. コマンド発行後、TXTレコードの登録指示がある。
  2. 管理しているDNSサーバにて、指示があったTXTレコードを登録
  3. 以下のコマンドで結果が返ってくるまでしばらく待つ
nslookup -type=TXT _acme-challenge.bbb.jp

→ 結果が返ってきたらEnter。証明書が更新される。

証明書一式を作業ディレクトリにコピー

  • 証明書を作業ディレクトリにコピー
cp -pi /etc/letsencrypt/live/bbb.jp/fullchain.pem ./bbb.jp.crt.$(date +%Y%m)
  • 秘密鍵を作業ディレクトリにコピー
cp -pi /etc/letsencrypt/live/bbb.jp/privkey.pem ./bbb.jp.key.$(date +%Y%m)

(通例、証明書は制限されています。読み取り時は注意してください)

証明書の整合性を確認

  • 期限が延びていることを確認
openssl x509 -noout -dates -subject -in bbb.jp.crt.$(date +%Y%m)
  • 証明書から公開鍵を取得
openssl x509 -pubkey -in bbb.jp.crt.$(date +%Y%m) -noout | openssl md5
  • 秘密鍵から公開鍵を取得
openssl pkey -pubout -in bbb.jp.key.$(date +%Y%m) | openssl md5

→ 両者が同じことを確認

  • 証明書のチェーンを確認
openssl crl2pkcs7 -nocrl -certfile bbb.jp.crt.$(date +%Y%m) | openssl pkcs7 -print_certs -outform PEM | awk 'BEGIN {c=0;} /BEGIN CERTIFICATE/ {c++} { print > "cert" c ".pem"}' && openssl verify -CAfile cert2.pem cert1.pem

openssl verify -CAfile cert2.pem cert1.pem
cert1.pem: OK

となることを確認

後は、これらの証明書を適切な位置に配置すれば完了です。

注意事項

  • 秘密鍵の保管は慎重に行ってください。
  • Let's Encryptのワイルドカード証明書の有効期限は90日と短いものです。更新忘れは特に注意してください。