Let's Encryptとは
Let's Encryptは、2015年に設立された非営利の認証局(CA)で、無料でドメイン検証(DV)TLS証明書を発行しています。ISRG(Internet Security Research Group)が運営し、Mozilla、Cisco、EFF、Akamai、Chrome、Facebookなどがスポンサーとなっています。
Let's Encryptの登場により、HTTPSの普及率は劇的に向上し、現在ではインターネット上の約80%以上のWebサイトがHTTPSを使用しています。ACME(Automatic Certificate Management Environment)プロトコルにより、証明書の取得と更新が完全に自動化されています。
Let's Encryptの特徴
- 完全無料:費用は一切かからない
- 自動化:ACMEプロトコルによる自動発行・更新
- 短い有効期間:90日間(自動更新前提)
- ドメイン検証:HTTP-01、DNS-01チャレンジ
- ワイルドカード対応:*.example.comの証明書も発行可能
AIエンジニアとしての実体験
AIエンジニアとして、開発環境やステージング環境のHTTPS化にLet's Encryptを多用しています。以下は日常的に使用するコマンドです:
# certbotのインストール(Ubuntu)
sudo apt update
sudo apt install certbot python3-certbot-nginx
# Nginx用の証明書取得(自動設定)
sudo certbot --nginx -d api.example.com -d www.example.com
# スタンドアロンモード(Webサーバーなしで取得)
sudo certbot certonly --standalone -d api.example.com
# DNS-01チャレンジ(ワイルドカード証明書)
sudo certbot certonly --manual --preferred-challenges dns \
-d '*.example.com' -d example.com
# 証明書の更新テスト
sudo certbot renew --dry-run
# 自動更新のcronジョブ確認
sudo systemctl list-timers | grep certbot
ACMEプロトコルの仕組み
HTTP-01チャレンジ
最も一般的な検証方法。指定されたトークンを/.well-known/acme-challenge/に配置して検証します。
DNS-01チャレンジ
DNSレコードにトークンを追加して検証。ワイルドカード証明書の取得に必須です。
自動更新の設定
# systemdタイマーの確認
sudo systemctl status certbot.timer
# 手動でcronを設定する場合
# /etc/cron.d/certbot
0 */12 * * * root certbot renew --quiet --post-hook "systemctl reload nginx"
最新動向(2026年)
証明書の有効期間短縮の議論
Google Chromeは証明書の有効期間を90日からさらに短縮することを提案しています。Let's Encryptの自動更新モデルがますます重要になっています。
ARI(ACME Renewal Information)
証明書の最適な更新タイミングをサーバーが指示する新機能がACMEプロトコルに追加されました。
トラブル事例と対策
⚠️ 自動更新の失敗
症状:証明書の期限切れでサイトがダウン
対策:certbot renewのテスト実行、監視システムでの証明書期限チェック、通知設定の確認。
⚠️ Rate Limit到達
症状:証明書の発行回数制限に到達
対策:ステージング環境を使用してテスト。本番では週50証明書の制限に注意。
