SSL/TLS証明書の基本|Let’s Encryptの自動更新設定

インフラ・クラウド

HTTPSによる暗号化通信は、現代のWebサービスでは事実上必須です。Let’s Encryptを使えば、無料で信頼性の高いSSL/TLS証明書を取得・自動更新できます。本記事では、SSL/TLS証明書の基本と、Let’s Encryptによる自動更新設定の手順を解説します。

SSL/TLS証明書の基本

SSL/TLS証明書は、Webサイトの身元を保証し、通信を暗号化するための仕組みです。認証局(CA)がドメイン所有者に発行し、ブラウザは内蔵されたルート証明書と照合して信頼性を判定します。

証明書の種類

  • DV(ドメイン認証):ドメインの所有のみ確認。Let’s Encryptはこれ
  • OV(組織認証):組織の実在も確認
  • EV(拡張認証):厳格な審査、UI上での表示が違っていた(現在は廃止傾向)

Let’s Encryptの特徴

  • 無料
  • 有効期限は90日(自動更新前提)
  • ACMEプロトコルで完全自動化
  • 主要ブラウザに信頼されている

certbotで取得

# インストール(Ubuntu/Debian)
sudo apt install certbot python3-certbot-nginx

# Nginx用に証明書取得+設定書き換え
sudo certbot --nginx -d example.com -d www.example.com

# Apache用
sudo certbot --apache -d example.com

# 単独取得(任意のWebサーバで使う)
sudo certbot certonly --standalone -d example.com

自動更新の設定

certbotはsystemd timerかcronで自動更新を実行します。多くのディストリでは標準で設定済みです。動作確認は以下で行えます。

# 更新のテスト(実際には更新しない)
sudo certbot renew --dry-run

# 強制更新(必要な時のみ)
sudo certbot renew --force-renewal

DNS認証で複数ドメイン・ワイルドカード

*.example.comのようなワイルドカード証明書はDNS-01チャレンジが必要です。各DNSプロバイダのプラグインで自動化できます。

sudo certbot certonly --dns-route53 \
  -d example.com -d "*.example.com"

マネージドサービスの選択肢

  • AWS Certificate Manager(ACM):CloudFront/ALB用に無料発行・自動更新
  • Cloudflare:DNSをCloudflareに置けばエッジSSLを無料で利用
  • Vercel / Netlify:デプロイ先で自動発行

運用Tips

  • SSL Labs(ssllabs.com/ssltest)で設定の評価を実施
  • HTTP/2・HTTP/3を有効化
  • HSTSヘッダーで強制HTTPS化
  • TLS 1.0/1.1は無効化、TLS 1.2/1.3を使う

まとめ

SSL/TLS証明書は、Let’s Encrypt + certbotで「無料・自動化」できる時代です。クラウド上ではACMやCloudflare等のマネージド証明書がさらに楽。重要なのは「自動更新を必ず動かす」こと。期限切れによる障害を未然に防ぎましょう。