blog.dopana

Back

Let’s Encryptは無料SSL証明書の標準となっていますが、時には代替案が必要になることがあります。管理負荷を削減したい、証明書の有効期間を長くしたい、既存のインフラとの統合を向上させたいなど様々な理由が考えられます。

Let’s Encryptの代替案を検討すべき理由#

Let’s Encryptは素晴らしいですが、いくつかの制限があります:

  • 有効期間が短い: 90日のみ、頻繁な更新が必要
  • Webインターフェースがない: コマンドラインを使用する必要がある
  • レート制限: 証明書の数に制限がある
  • OV/EVサポートなし: ドメイン検証(DV)のみ

[!TIP] Let’s Encryptで問題が発生している場合、または他の選択肢を探している場合、今日利用可能な最良の代替案を紹介します。

1. Cloudflare SSL(プロキシ/CDNの最良ソリューション)#

DNSをCloudflareに向ける場合、サーバーでの手動更新なしに無料SSL証明書が提供されます。

Universal SSL#

  • Cloudflareプロキシを通るすべてのドメインで自動的に有効化
  • ホスティングへのインストール不要
  • ブラウザがすぐに受け入れる公開信頼済み証明書

Origin CA証明書#

  • Cloudflareがサーバーに直接インストールする証明書を発行
  • 最大15年の有効期間
  • サーバーからCloudflareへのデータを暗号化
  • Let’s Encryptのように3ヶ月ごとの期限切れを心配する必要がない
graph LR
    A[ブラウザ] --> B[Cloudflare Edge]
    B --> C[オリジンサーバー]
    B -.->|Universal SSL| A
    C -.->|Origin CA| B
    style B fill:#f9f,stroke:#333,stroke-width:2px

[!WARNING] Origin CAはCloudflareによってのみ信頼されており、公開信頼されていません。Cloudflareをバイパスしてサーバーに直接アクセスすると、ブラウザはエラーを表示します。

Cloudflare SSLを使用すべき場合#

  • ウェブサイトがCloudflareプロキシを通って実行されている
  • SSL管理の労力を最小限にしたい
  • 追加のCDN、DDoS保護のメリットが必要
  • サーバーでcertbotを設定したくない

2. ZeroSSL(直接ACME競合他社)#

ZeroSSLはLet’s Encryptの最大の競合相手で、自動化にもACMEプロトコルを使用しています。

利点#

  • 無料: 90日、Webインターフェース経由で最大3つの証明書
  • 無制限: ACME自動化で設定した場合
  • 直感的なWebインターフェース: コマンドラインより使いやすい
  • 完全なACMEポートサポート: HTTP-01、DNS-01、TLS-ALPN-01

制限#

  • ワイルドカードSSLは有料プランのみ
  • 無料階層では厳しいレート制限
# CertbotでZeroSSLを設定
certbot certonly --authenticator dns-zero_ssl \
  --dns-zero_ssl-credentials ~/.secrets/zero_ssl.ini \
  -d example.com -d *.example.com
bash

ZeroSSLを使用すべき場合#

  • ユーザーフレンドリーなWeb管理インターフェースが欲しい
  • ワイルドカードSSLが必要(有料プラン)
  • ACMEに慣れているが、より良いUIが欲しい

3. SSL For Free(現在ZeroSSLの一部)#

以前はWeb経由でLet’s Encrypt証明書を手動で作成するツールでした。現在ZeroSSLに統合されています。

  • 無料の90日SSL証明書を作成するためにまだ使用可能
  • コマンドライン不要
  • バックエンドシステムはZeroSSL

SSL For Freeを使用すべき場合#

  • ACME設定なしで迅速にSSLが必要
  • 1〜2つの単純な証明書のみが必要
  • シンプルな手動プロセスが欲しい

4. Buypass Go SSL(ヨーロッパのACME代替案)#

ノルウェーの信頼できる認証局(CA)。

主な利点#

  • 180日の有効期間: Let’s Encrypt/ZeroSSLの2倍
  • ACME互換: Let’s Encryptからの移行が容易
  • 公開信頼済み: すべてのブラウザが受け入れる
  • 無料ワイルドカード: ACME v2経由

制限#

  • シングルドメインのみ(マルチドメインSANなし)
  • Buypassアカウントが必要
  • Webインターフェースなし
# Let's EncryptからBuypassに移行
# サーバーURLを変更するだけ
# From: https://acme-v02.api.letsencrypt.org/directory
# To: https://api.buypass.com/acme/directory
bash

Buypassを使用すべき場合#

  • より長い証明書の有効期間(180日)が欲しい
  • 無料のワイルドカードが必要
  • ヨーロッパに所在、ローカルCAが欲しい
  • 既にACMEインフラがある

5. クラウドプロバイダーからのSSL#

クラウドプラットフォームでインフラを実行している場合、統合された無料SSLがあります。

AWS Certificate Manager (ACM)#

  • Load Balancer(ALB)およびCloudFront用に無料
  • 自動的永続更新
  • Elastic Load Balancing用の公開証明書
  • 内部アプリケーション用のプライベート証明書

Google Managed SSL#

  • App Engine、GKE、Cloud Run用に無料
  • 自動ライフサイクル管理
  • Google Cloud Load Balancingと統合

Azure Key Vault#

  • 管理SSL証明書
  • Application Gatewayと統合
  • 自動更新
graph TD
    A[クラウドプロバイダー] --> B[AWS ACM]
    A --> C[Google Managed SSL]
    A --> D[Azure Key Vault]
    B --> E[ALB/CloudFront]
    C --> F[App Engine/GKE]
    D --> G[Application Gateway]
    style A fill:#e1f5fe,stroke:#01579b,stroke-width:2px

クラウドプロバイダーSSLを使用すべき場合#

  • 対応するクラウドプラットフォーム上のインフラ
  • クラウドサービスとの深い統合が欲しい
  • メンテナンスなしの管理サービスが必要
  • 大規模、多くのアプリケーション

詳細比較表#

基準Let’s EncryptCloudflare SSLZeroSSLBuypass
有効期間90日永久 / 15年(Origin)90日180日
動作直接サーバーインストールプロキシCDNサーバーまたはWeb UI直接サーバーインストール
Webインターフェースなし(CLIのみ)非常に直感的ダッシュボードありなし(CLIのみ)
ワイルドカードSSLあり(DNS-01)あり(無料)有料プランのみあり(ACME v2)
マルチドメインあり(SAN)ありあり(有料)なし
ACMEサポートありなし(Origin CA)ありあり
公開信頼ありあり(Universal)ありあり
レート制限50/週無制限3無料不明

Let’s Encryptからの移行ガイド#

Cloudflare SSLへの移行#

  1. DNSをCloudflareに向ける
# ネームサーバーを更新
nslookup -type=NS example.com
bash
  1. Universal SSLを有効化
  • Cloudflare Dashboard > SSL/TLSに移動
  • “Full”または”Full (strict)“モードを選択
  • Universal SSLが自動的に有効化
  1. Origin CAをインストール(必要な場合)
# CloudflareからOrigin CA証明書をダウンロード
# サーバーにインストール
sudo cp origin.pem /etc/ssl/certs/
sudo cp origin.key /etc/ssl/private/
# この証明書を使用するようにNginx/Apacheを設定
bash

ZeroSSLへの移行#

  1. ZeroSSLアカウントを作成
  • zerossl.comにサインアップ
  • APIキーを取得
  1. Certbotを設定
# ZeroSSLプラグインをインストール
sudo apt install python3-certbot-dns-zero-ssl

# 認証情報ファイルを作成
echo "dns_zero_ssl_api_token = YOUR_API_TOKEN" > ~/.secrets/zero_ssl.ini
chmod 600 ~/.secrets/zero_ssl.ini

# 証明書をリクエスト
certbot certonly --authenticator dns-zero_ssl \
  --dns-zero_ssl-credentials ~/.secrets/zero_ssl.ini \
  -d example.com -d *.example.com
bash

Buypassへの移行#

  1. Buypassアカウントを作成
  • buypass.comにサインアップ
  • EAB認証情報を取得
  1. ACMEクライアントを設定
# Certbotを使用
certbot register --account-key ~/.secrets/buypass.key \
  --email your@email.com \
  --server https://api.buypass.com/acme/directory

# 証明書をリクエスト
certbot certonly --server https://api.buypass.com/acme/directory \
  -d example.com
bash

よくある質問#

どのソリューションを選ぶべきですか?#

Cloudflare SSLを選択すべき場合:

  • ウェブサイトがCloudflareを通して実行されている
  • 「設定して忘れる」ソリューションが欲しい
  • 追加のCDN/DDoS保護が必要

ZeroSSLを選択すべき場合:

  • ユーザーフレンドリーなWebインターフェースが欲しい
  • ワイルドカードSSLが必要(有料プラン)
  • ACMEに慣れている

Buypassを選択すべき場合:

  • 180日の有効期間が欲しい
  • 無料のワイルドカードが必要
  • ヨーロッパに所在

クラウドプロバイダーSSLを選択すべき場合:

  • AWS/GCP/Azure上のインフラ
  • 管理サービスが欲しい
  • 大規模

Origin CAは安全ですか?#

Origin CAは以下の場合に安全です:

  • すべてのトラフィックがCloudflareプロキシを通る
  • “Full (strict)” SSLモードを使用している
  • オリジンサーバーに直接アクセスしない

以下の場合に安全ではありません:

  • オリジンへの直接トラフィックが存在する
  • Cloudflareがダウンタイムを経験する
  • 公開信頼済み証明書が必要

複数のソリューションを組み合わせられますか?#

はい!例えば:

  • パブリックトラフィック用のCloudflare Universal SSL
  • Cloudflare → オリジン用のOrigin CA
  • ダイレクトアクセスルート用のLet’s Encrypt

結論#

Let’s Encryptは多くのユースケースで優れた選択肢ですが、唯一のソリューションではありません。特定のニーズに応じて:

  • 最小限の労力: Cloudflare SSL
  • 独立、プロキシなし: ZeroSSLまたはBuypass
  • クラウドネイティブ: AWS ACM、Google Managed SSL
  • 迅速、手動: SSL For Free

重要なポイント:アーキテクチャとワークフローに合ったソリューションを選択し、必ずしも「人気のある選択肢」に従う必要はありません。

参考文献#