📆

AWS ACMから証明書エクスポートできるようになったのでEC2の証明書更新を再検討してみる

に公開

これまでEC2にインストールしたNginxの証明書更新は手作業で行っていましたが、最近AWS ACMの機能アップデートがされて証明書のエクスポートが可能になりました。これをきっかけに、改めてAWS EC2環境での証明書更新手段を比較検討してみます。

CloudFrontやALBでTLS終端しているのが普通と思いますが様々な事情によりEC2に証明書をインストールしていることがあります。

現在の有力候補である ACME(Let’s Encrypt 等)ACM の証明書エクスポート、そして ACM for Nitro Enclaves の 3 パターンを調査しました。

この記事では、実際の運用現場を想定した比較表とともに共有します。


ざっくり比較表

ACME(Let’s Encrypt/Certbot) ACM + 証明書エクスポート ACM for Nitro Enclaves
自動更新トリガー certbot renew を cron/systemd-timer で定期実行(毎日想定) ACM が有効期限 60 日前から再発行し、EventBridge → Lambda で検知 ACM が再発行 → enclave agent がポーリング
鍵の扱い EC2 ファイルシステム上。権限制御は自分で実装 ACM が生成。エクスポート時に一度だけ取得 鍵は enclave 内に隔離されホスト OS から不可視
導入コスト 無料 $15 or $169 Nitro 対応インスタンス費用
運用コスト感 最小(EC2 内だけで完結) Lambda・IAM 設計など構築手間。台数少ないと割高感 インフラ前提条件が限定的
対応証明書タイプ 主に DV。OV/EV は一部 CA のみ ACM 公開・私有 DV(OV/EV 未対応) 同左

比較してみた感想

1. 本命は ACME

  • EC2 内だけで完結し、cron+Certbot フックでシンプルに自動化可能。
  • 失敗時もログファイルを直接確認できるなど、オンプレ感覚で扱いやすい。
  • ただし OV/EV 証明書を必要とする案件では発行 CA が限られるため事前確認が必須です。
  • 末尾に「ACMEプロトコル対応の証明書発行サービス比較(国内・グローバル)」を掲載しました。

2. ACM エクスポートは“使い所を選ぶ”

  • ALB や CloudFront 以外にも ACM 証明書を配れるようになった点は大きな進歩。
  • ただ、EventBridge → Lambda → S3/SSM → RunCommand といった イベント駆動パイプライン が必要で、対象 EC2 が少数だと構築・保守コストの割に合わないことも。
  • Lambda 共通サービス化 までやればメリットが出る可能性はあります。

3. Nitro Enclaves はユースケースが限定的

Nitro Enclaves が想定しているユースケースは以下の通りで、ほとんどの一般的なシステムでは該当しないことが多いです。

  • 機密データ処理
    医療データ、金融データ、暗号鍵などを安全に処理したい場合。
  • 独立したセキュア実行環境が必要な場合
    ホストOSやEC2インスタンスから分離された環境で実行したいとき。
  • BYOK (Bring Your Own Key)
    独自の暗号鍵をAWS KMS と組み合わせて使いたい場合。
  • Confidential Computing 要件
    業界や規制で confidential computing が求められているケース。
  • サードパーティとのデータ共有
    第三者にデータ処理を委託する際、データ漏洩リスクを最小化したいとき。

まとめ

  • DV & 少数台運用なら ACME が最有力
  • いつも証明書を買っている CA が必要な証明書の発行をACMEプロトコルに対応していたら最高
  • 大規模 or AWS ネイティブ統合を重視する場合は ACM エクスポート
  • Nitroのユースケースにシステムがマッチするなら Nitro Enclaves を採用

ACMEが一番よさそうだし、システム要件をACMEに向けて変えていくのが良いかなぁという感想。


参考情報

ACMEプロトコル対応の証明書発行サービス比較(国内・グローバル)

ACMEプロトコルに対応した証明書発行サービスを国内・グローバルそれぞれで調査し、対応する署名書タイプ(DV/OV/EV)をまとめました。

  • DV証明書:すべてのサービスでACME対応可能。
    特にLet’s Encryptは無料かつ運用容易。

  • OV/EV証明書:国内ではemSign・Sectigo、グローバルではDigiCertがACMEに幅広く対応しているため、用途に応じて選択。

国内(日本国内・APAC)

サービス名 DV対応 OV対応 EV対応 備考
GlobalSign Atlas経由・SLA対応。
emSign 国内法人向けに全タイプ対応。
Sectigo 企業向けマネジメントに強み。

グローバル

サービス名 DV対応 OV対応 EV対応 備考
Let’s Encrypt × × 無料で自動化に最適。
DigiCert CertCentral経由でACME対応。
GlobalSign 国内同様、Atlas経由で対応。

参考リンク

自動更新フローを 1 段階深掘り

運用中に想定される作業やトラブル対応まで踏まえた上で、それぞれのフローを細かく見ていきます。

観点 ACME(Certbot) ACM + エクスポート ACM for Nitro Enclaves
更新トリガー cron/systemd-timer が certbot renew を 1–2 回/日実行 ACM が自動再発行 → EventBridge ルールが ACM CertificateRenewed を受信 ACM が自動再発行 → enclave agent がポーリング
新証明書の検知 --deploy-hook で「更新あり」を判定し Nginx に通知 EventBridge → Lambda (ExportCertificate API) → S3 or SSM enclave agent が新 PEM を取り込み、サービスが通知
Nginx 反映 systemctl reload nginx 等で即時リロード Lambda → SSM Run Command で nginx -s reload aws-nitro-enclaves-acm サービスが conf & PEM を更新後、自動リロード
失敗検知 cron のログ/監視ツール ACM Health Dashboard & EventBridge エラー通知 journalctl -u nitro-enclaves-acm.service で監視
特有の課題 HTTP-01 検証失敗・DNS 変更で失効リスク Lambda/SSM の権限設計とメンテ負荷 Nitro 対応インスタンス必須/ユースケース限定

Discussion