2026年5月26日
2026年5月26日
ワイルドカードSSL証明書をLet’s Encryptで取得する方法
はじめに
ワイルドカードSSL証明書は、単一のドメインとそのサブドメイン全てに対してSSL/TLS通信を保護するための証明書です。例えば、*.example.comというワイルドカード証明書は、sub1.example.com, sub2.example.comなど、ドメイン名に含まれる任意のサブドメインに対して有効となります。
Let's Encryptは無料で利用可能なSSL/TLS認証局であり、簡単に手軽な方法でセキュアな通信を提供します。しかし、ワイルドカードSSLの取得には通常のLet's Encryptクライアントでは対応しておらず、特定のツールやプロバイダを通じてのみ取得が可能です。
症状・背景
この記事が必要になる主な場面:
- ドメインとその全てのサブドメインに対してSSL証明書を一括で管理したい場合
- サーバー全体にわたるセキュリティポリシーの一貫性を保つために、ワイルドカードSSLを使用したい場合
- 多数のサブドメインを持つウェブサイトやアプリケーションに対して、個々の証明書を管理するのが煩雑である場合
手順・設定方法
ステップ1: ワイルドカードDNSレコードの設定
# サブドメインが含まれる全てのサブドメインに対して、ワイルドカードDNSレコードを作成します。
$ dig +short example.com TXT
"v=spf1 include:_acme-validation.example.com -all"
ステップ2: Certbotを使用したワイルドカード証明書の取得
# Certbotをインストールする前に、必要なリポジトリと依存関係が存在することを確認します。
$ sudo apt update && sudo apt install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python3-certbot-dns-route53
# Certbotを使用してワイルドカード証明書を取得します。
$ certbot certonly --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory -d example.com -d *.example.com
ステップ3: DNSレコードの更新と確認
# ディレクトリに移動して、必要なファイルを取得します。
$ cd /etc/letsencrypt/live/example.com/
$ cat cert.pem privkey.pem chain.pem fullchain.pem
# 確認のために証明書情報を表示します。
$ openssl x509 -in fullchain.pem -text -noout
ステップ4: 証明書の自動更新設定
# タスクスケジューラーを設定して、定期的にCertbotを実行することで証明書の有効期限を延長します。
$ sudo crontab -e
@daily certbot renew --quiet && systemctl reload nginx
注意事項
- DNSレコードの更新に時間がかかる場合があります。特に大規模な組織では、変更が反映されるまで数分から数時間待つ必要があるかもしれません。
- サーバーとDNSプロバイダ間で十分な通信環境を確保しておきましょう。証明書の取得には安定したネットワーク接続が必要です。
- 安全性のために、公開鍵や秘密鍵を適切に管理し、アクセス制限を設けてください。
- 一般的に、ワイルドカードSSLを使用することでパフォーマンスへの影響はほとんどありませんが、大規模な組織では証明書の更新やセキュリティポリシーの変更時に注意が必要です。
まとめ
1. DNSレコード: サブドメイン用のワイルドカードDNSレコードを作成しておきます。
2. Certbot: Certbotを使用してワイルドカード証明書を取得します。必要なプラグインや依存関係がインストールされていることを確認しましょう。
3. 更新と確認: 証明書の情報を表示し、証明書情報が期待通りに設定されているかを確認します。
4. 自動更新: タスクスケジューラーを使用して定期的にCertbotを実行することで、証明書の有効期限を延長できます。
5. セキュリティとパフォーマンス: DNSプロバイダとの連携やネットワーク接続環境についても考慮してください。
関連記事: