🔐
無料HTTPSサービスの仕組み
Let's Encrypt、Cloudflare、ACMが無料証明書を提供する仕組み
2015年にLet's Encryptが登場して以来、HTTPSは実質無料になりました。ACMEプロトコルによる自動発行、CloudflareのEdge SSL終端、AWS ACMのマネージド証明書など、様々な無料HTTPSサービスの動作原理とCA信頼チェーン構造を解説します。
構造ダイアグラム
CA信頼チェーン(Certificate Trust Chain)
🔐
ルートCA(Root CA)
OS/ブラウザにプリインストール。オフライン保管。
ISRG Root X1, DigiCert Global Root
↓
署名(Sign)
📜
中間CA(Intermediate CA)
実際の証明書発行担当。ルートCAのリスク分散。
R3, E1 (Let's Encrypt)
↓
発行(Issue)
🖥️
サーバー証明書
ドメインにバインド。90日有効期間(Let's Encrypt)。
myapp.com
ACMEプロトコルフロー(自動証明書発行)
1
新規注文(New Order)
ACMEクライアント(certbot等)→ ACMEサーバーに証明書リクエスト
2
認可(Authorization)
サーバーがドメイン所有権証明方法(チャレンジ)を提示
3
チャレンジ実行
HTTP-01
http://ドメイン/.well-known/acme-challenge/ にトークンファイル配置
DNS-01
_acme-challenge.ドメイン TXTレコードにトークン設定
4
検証(Validate)
ACMEサーバーがチャレンジを確認しドメイン所有権を検証
5
完了+証明書ダウンロード
CSR提出 → 証明書発行 → サーバーにインストール
無料HTTPSサービス比較
| Let's Encrypt | Cloudflare | AWS ACM | |
|---|---|---|---|
| 価格 | 無料 | 無料(プロキシ必須) | 無料(AWSサービス連携) |
| 有効期間 | 90日 | 自動管理 | 自動更新(13ヶ月) |
| ワイルドカード | 対応(DNS-01必要) | 対応 | 対応 |
| 自動更新 | certbot cron設定 | 完全自動 | 完全自動 |
| インストール先 | 自前サーバー | Cloudflareエッジ | ALB / CloudFront |
TLSハンドシェイク(簡略化)
💻
クライアント
1. Client Hello
→
TLSバージョン、暗号スイート一覧、ランダム値
2. Server Hello + Cert
←
選択された暗号スイート、サーバー証明書(公開鍵含む)
3. Key Exchange
→
セッションキー生成のための鍵交換(ECDHE)
🔒 暗号化通信開始
↔
対称鍵(セッションキー)でデータ暗号化。TLS 1.3は1-RTTで完了。
🖥️
サーバー
Let's Encryptはどうやって運営されているか?
🏛️
非営利団体 ISRG(Internet Security Research Group)
2013年設立。証明書の販売収益なしで100%スポンサーシップと寄付で運営。年間予算約$3.6M(2023年基準)。
核心収入
大企業スポンサーシップ(〜70%)
Cisco
Akamai
Google Chrome
Mozilla
Meta
AWS
EFF
Platinumスポンサー年間$300K+、Gold $150K+、Silver $50K+
寄付
個人・企業寄付(〜20%)
ウェブサイトから直接寄付可能。開発者コミュニティの自発的支援が大きな割合。
助成金
財団・政府助成金(〜10%)
Ford Foundation、Linux Foundation等からインターネットセキュリティインフラとして支援
なぜ大企業がお金を出すのか?
•
HTTPS普及 → フィッシング/中間者攻撃減少 → 自社サービス利用環境が安全に
•
Cisco/Akamai視点:顧客がSSL証明書コストでHTTPS導入を先延ばしにすると自社CDN/セキュリティ製品の売上に悪影響
•
Google Chrome:HTTPSを検索順位加点要素にした立場 → 無料証明書普及が必須
•
年間$300Kは大企業マーケティング費の0.001%にもならないが、インターネット全体のセキュリティインフラを維持する効果
3.5億+
アクティブ証明書数
~15人
フルタイム職員
$0
証明書発行コスト
核心ポイント
•
Let's EncryptのおかげでHTTPSがWeb標準に — 2024年時点でWebトラフィックの95%以上がHTTPS
•
DNS-01チャレンジはワイルドカード証明書に必須で、内部サーバーでも利用可能
•
TLS 1.3はハンドシェイクを1-RTTに短縮し、0-RTT再接続もサポート(PSK)
動作フロー
1
ACMEクライアント(certbot)がCAサーバーにアカウント登録とドメイン証明書を注文
2
CAがドメイン所有権検証のためのチャレンジを発行(HTTP-01またはDNS-01)
3
クライアントがチャレンジを充足(Webサーバーにトークンファイル配置またはDNS TXTレコード追加)
4
CAが検証後DV証明書を発行(Root CA → Intermediate CA → End-entity チェーン)
5
Webサーバーに証明書をインストール → クライアント接続時にTLSハンドシェイクで暗号化通信開始
メリット
- ✓ 完全無料: Let's Encrypt、Cloudflare、ACMすべてがDV証明書を無料提供
- ✓ 自動化: ACMEプロトコルで発行/更新を完全自動化可能
- ✓ SEOメリット: GoogleがHTTPSをランキングシグナルとして使用
- ✓ セキュリティ強化: 中間者攻撃(MITM)防止、データ暗号化
デメリット
- ✗ DV証明書の限界: ドメイン所有権のみ検証、組織の身元は未確認
- ✗ Let's Encrypt 90日有効期間: 自動更新失敗時のサービス中断リスク
- ✗ Cloudflare依存性: Shared SSL使用時、Cloudflare障害がサイト障害に直結
- ✗ ACM制約: AWSサービス(ALB、CloudFront)でのみ使用可能、EC2直接インストール不可
ユースケース
個人ブログ/ポートフォリオサイトのHTTPS適用(Let's Encrypt + certbot)
CDNによる自動SSL管理(Cloudflare Universal SSL)
AWSインフラSSL統合(ACM + ALB/CloudFront)
マイクロサービス間mTLS(相互TLS)認証