Amazon Web Services ブログ

AWS Certificate Manager がパブリック証明書のエクスポートをサポート

本ブログは 2025 年 6 月 30 日に公開された AWS Blog “AWS Certificate Manager now supports exporting public certificates” を翻訳したものです。

AWS Certificate Manager (ACM) は、AWS サービスやオンプレミス、ハイブリッドアプリケーション向けのパブリックおよびプライベート TLS 証明書のプロビジョニング、管理、デプロイを簡素化するサービスです。多様なワークロードに対する ACM の柔軟性をさらに高めるため、AWS は強力な新機能である ACM エクスポート可能なパブリック証明書を導入しました。この機能により、ACM からパブリック TLS 証明書と関連するプライベートキーをエクスポートできるようになります。エクスポートした証明書は、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、Amazon Elastic Kubernetes Service (Amazon EKS) Pod、オンプレミスサーバー、または他のクラウドプロバイダーでホストされているサーバー上のワークロードを保護するために使用できます。この機能は、AWS アカウントで新しく作成されたパブリック証明書をサポートしています。

このブログでは、多様なインフラストラクチャ全体でエクスポート可能なパブリック証明書のエクスポートとデプロイを自動化する方法を紹介します。EC2 インスタンスやハイブリッド環境の仮想マシンなど、複数の宛先に証明書を自動的にデプロイするワークフローの作成手順を説明します。この自動化の仕組み、メリット、および開始するためのステップバイステップガイドを提供します。さらに、Amazon EventBridge との統合により、証明書が発行または更新されたときに自動的に証明書のエクスポートをトリガーする方法についても説明します。これにより、異種環境全体での証明書のデプロイが効率化され、管理オーバーヘッドが大幅に削減されます。

背景: ACM と証明書管理

ACM は、TLS 証明書の購入、アップロード、更新の複雑さを取り除くマネージドサービスです。Elastic Load Balancing (ELB)Amazon CloudFrontAmazon API Gateway など、ACM と統合された AWS サービス向けに追加料金なしでパブリック証明書を提供します。ACM は、サードパーティのパブリック証明書のインポートや、AWS Private Certificate Authority を通じたプライベート証明書の発行もサポートしています。本日 (2025 年 6 月 30 日) のリリース以前、ACM パブリック証明書は CloudFront などの ACM と統合された AWS サービス向けに設計されており、それらのサービスにシームレスな TLS 暗号化を提供していました。サードパーティのコンテンツ配信ネットワーク (CDN) や EC2 インスタンスで TLS を終端するワークロードでは、お客様は通常、他のプロバイダーから証明書を取得するか、一元管理のために ACM にインポートしていました。お客様からは、これらのユースケースにも ACM を使用し、そのシンプルさとスケーラビリティをより幅広い環境に拡張したいというご要望をいただいていました。新しい ACM エクスポート可能なパブリック証明書機能は、このニーズに応えるものであり、一元管理と自動更新を維持しながら、ACM で管理されたパブリック証明書をカスタムワークロードで使用するためにエクスポートできるようになりました。

ACM を使用すると、パブリック証明書をリクエストし、ドメインの所有権が検証された後、Apache、NGINX、Microsoft IIS などの TLS を終端するソフトウェアで使用するために証明書をエクスポートできるようになりました。ACM は証明書の更新を処理するため、アプリケーションを中断させる可能性のある証明書の有効期限切れのリスクが軽減されます。

仕組み: ACM パブリック証明書の発行と更新

ACM エクスポート可能なパブリック証明書を使用するには、発行と更新のプロセスを理解し、証明書管理を自動化する方法を把握する必要があります。このセクションでは、これらのプロセスと自動化機能について説明します。これらは証明書のデプロイと維持に不可欠です。

ACM パブリック証明書の発行

ACM パブリック証明書の発行には、以下の手順が含まれます。

  1. 証明書のリクエスト: ACM の AWS マネジメントコンソール、または AWS コマンドラインインターフェイス (AWS CLI) や API で、保護したいドメイン名 (例: example.com や *.example.com) を指定して証明書をリクエストします
  2. ドメイン所有権の検証: ACM では、ドメインの管理権限を証明する必要があります。ドメインが Amazon Route 53 でホストされている場合、ACM にドメインの所有権を検証するようリクエストできます。AWS 外でホストされているドメインの場合、DNS 検証 (CNAME レコードの追加) または E メール検証 (ドメイン連絡先に送信されたメールへの応答) を使用できます
  3. 証明書の発行: ドメインの所有権が検証されると、ACM は公開鍵、プライベートキー、証明書チェーンを含む証明書を発行します
  4. 統合された AWS サービスへの証明書の関連付け: 統合された AWS サービスに証明書を関連付ける方法については、ACM と統合されたサービスを参照してください
  5. 証明書のエクスポート: 新機能により、ACM コンソール、AWS CLI、または API を使用して、ACM と統合されていないサーバーで使用するためにパブリック証明書、プライベートキー、証明書チェーンをエクスポートできるようになりました
  6. アプリケーションへのバインド: エクスポートした証明書をサーバー (例: Apache や NGINX) にインストールして、TLS 終端を有効にします

この新機能のリリースにより、ACM で作成したパブリック証明書をエクスポートできるようになりました。エクスポートの可否は証明書の作成時に指定します。

エクスポート可能なパブリック証明書を作成するには、ACM コンソールを使用して新しいパブリック証明書を作成します。開始するには、ACM コンソールで [証明書をリクエスト] を選択し、[パブリック証明書をリクエスト] ページの [エクスポートを許可] で [エクスポートを有効にする] を選択します。[エクスポートを無効にする] を選択すると、この証明書のプライベートキーは ACM からのエクスポートが許可されなくなり、証明書の発行後に変更することはできません。

図 1: パブリック証明書をリクエストしてエクスポートを有効化

図 1: パブリック証明書をリクエストしてエクスポートを有効化

[エクスポートを有効にする] オプションを選択して証明書を作成し、ドメインの所有権の検証を完了したら、図 2 のようにエクスポートプロセスに進むことができます。証明書をエクスポートするには、証明書のリストから証明書を選択し、[その他のアクション] を選択して、[エクスポート] を選択します。

図 2: 証明書をエクスポート

図 2: 証明書のエクスポート

ACM パブリック証明書の更新

ACM は証明書の更新プロセスを自動化します。このプロセスには以下が含まれます。

  1. 更新の開始: ACM は証明書の有効期限の 60 日前に自動的に更新プロセスを開始します
  2. ドメインの再検証: ACM は初回発行時と同じ方法 (DNS または E メール) を使用してドメインの所有権を再検証します
  3. 証明書の更新: 再検証が成功すると、ACM は同じ Amazon リソースネーム (ARN) で有効期限が更新された新しい証明書を発行します
  4. ACM で証明書が更新されると、サービスは自動的に EventBridge イベントを送信し、新しい証明書が利用可能になったことを通知します。更新が失敗した場合、ACM は AWS Health Dashboard と EventBridge の両方に通知を送信します。これらの証明書イベントに関する情報を受け取るには、特定の証明書関連イベントを監視する EventBridge ルールを作成します。これらのルールを設定して Amazon Simple Notification Service (Amazon SNS) トピックに通知を送信することで、関係者が証明書のステータスに関するタイムリーな更新を受け取ることができます

新しい EventBridge スキーマフィールド: ACM 証明書の更新が成功すると、ACM Certificate Available イベントに exportable フィールドが含まれるようになりました。このフィールドは、パブリック証明書がエクスポート可能かどうかを TRUE|FALSE で示します。

{
    "version": "0",
    "id": "id", 
    "detail-type": "ACM Certificate Available",
    "source": "aws.acm",
    "account": "account",
    "time": "2019-12-22T18:43:48Z",
    "region": "region",
    "resources": [
        "arn:aws:acm:region:account:certificate/certificate_ID"
    ],
    "detail": {
       "Action" : "ISSUANCE" | "RENEWAL" | "IMPORT" | "REIMPORT",
       "CertificateType" : "AMAZON_ISSUED" | "PRIVATE" | "IMPORTED",    
       "CommonName": "example.com",     
       "DomainValidationMethod" : "EMAIL" | "DNS",    
       "CertificateCreatedDate" : "2019-12-22T18:43:48Z",
       "CertificateExpirationDate" : "2019-12-22T18:43:48Z",
       "DaysToExpiry" : 395,
       "InUse" : TRUE | FALSE,    
       "Exported" : TRUE | FALSE,
       "Exportable" : TRUE | FALSE   <== New     
     }
}
  1. エクスポートと更新: 更新された証明書をエクスポートし、手動でサーバーに更新するか、EventBridge ルールによってトリガーされる AWS Systems Manager Automation ドキュメントなどの EventBridge ターゲットを使用して更新できます。詳細については、Amazon EventBridge のイベントバスターゲットを参照してください

EventBridge ルールを使用して特定のイベントを監視し、処理のために 1 つ以上のターゲット (Amazon SNS トピック、AWS Lambda 関数、その他の AWS サービスなど) に配信できます。たとえば、DNS 設定の問題によりドメイン検証が失敗した場合、ACM は ACM Certificate Renewal Action Required EventBridge イベントを生成します。SNS トピックをターゲットとする EventBridge ルールを作成することで、E メールアラートを受信するようサブスクライブし、必要な是正措置を講じることができます。

EventBridge を使用した更新済み証明書のデプロイの自動化

証明書の更新プロセスにより、手動介入なしで TLS 証明書の有効性を維持できますが、多様な環境全体で証明書を更新するには依然として手間がかかる場合があります。ACM が証明書を更新すると、EventBridge イベントが生成されます。このイベントに基づいてターゲットをトリガーする EventBridge ルールを設定できます。

  • 通知の送信: イベントを Amazon SNS に配信して、管理者に E メールまたは SMS 通知を送信します
  • 証明書デプロイの自動化: Lambda 関数または Systems Manager Automation ドキュメントをトリガーして、ACM API を使用して更新された証明書を取得し、サーバーに更新します
  • 更新失敗の監視: ACM 証明書の更新失敗イベントに基づいてアラートを設定します。これらのイベントは通知チャネルに直接配信して、ドメイン検証エラーなどの問題を通知できます

これを設定するには、ACM 更新イベントに一致する EventBridge ルールを作成し、ターゲット (SNS トピックや Lambda 関数など) を指定します。この自動化により手動介入が最小限に抑えられ、インフラストラクチャ全体でシームレスな証明書更新が実現します。

ソリューションの概要

このセクションでは、2 つのワークフローについて説明します。1 つ目は、既存の ACM パブリック証明書をエクスポートし、ターゲットの EC2 インスタンスまたは仮想マシンにインストールする自動化プロセスです。2 つ目は、ACM でパブリック証明書が自動更新されて利用可能になったときにトリガーされ、対象の EC2 インスタンスと仮想マシンの証明書を更新するワークフローです。このソリューションではターゲットシステムとして EC2 インスタンスと仮想マシンを使用していますが、同じ方法を適用して、さまざまな種類のシステム全体でパブリック証明書を大規模に更新できます。

前提条件

  1. この自動化されたパブリック証明書のエクスポートと更新プロセスを拡張するには、以下を行います。
    1. EC2 インスタンスの管理: Systems Manager による EC2 インスタンスの管理の手順に従ってください
    2. オンプレミスや他のクラウド環境の仮想マシンの管理: Systems Manager によるハイブリッドおよびマルチクラウド環境のノード管理の手順に従ってください
  2. 更新された証明書をデプロイする EC2 インスタンスと仮想マシンに TargetTagKey タグを追加します。自動化はこれらのタグを使用してターゲットインスタンスを識別します
  3. ExportCertificate API の操作には証明書のパスフレーズが必要です。セキュリティのベストプラクティスを維持するため、パスワードはプレーンテキストではなく、暗号化して安全に保存することをお勧めします。この実装では、AWS Secrets Manager を使用してこれらの機密認証情報を安全に保存します。このソリューションでは、Amazon DynamoDB を使用して証明書メタデータを維持します。これには、Secrets Manager に保存されている対応するシークレット名への参照が含まれます。セキュリティを強化するため、DynamoDB テーブルのデータは AWS Key Management Service (AWS KMS) を使用して保存時に自動的に暗号化されます

ACM 証明書のエクスポート

図 3: ACM 証明書の発行とエクスポートのワークフロー

図 3: ACM 証明書の発行とエクスポートのワークフロー

図 3 のワークフローは、既存の ACM パブリック証明書を API 駆動のプロセスでエクスポートし、対象のシステムにデプロイする自動化プロセスです。

  1. プロセスは、ユーザーが API Gateway エンドポイントにリクエストを送信することから始まります。リクエストには、エクスポートする証明書を識別する CertificateArn、証明書の識別用の CertName、証明書をインストールするターゲット EC2 インスタンスを識別するための TargetTagKeyTargetTagValue などの必須パラメータが含まれます。以下は API Gateway に送信されるペイロードの例です。
    {
      "CertificateArn": "arn:aws:acm:us-east-1:1234567890123:certificate/8106d6b2-f204-4354-8893-d49e311b3900",
      "CertName": "academe",
      "TargetTagKey": "env",
      "TargetTagValue": "dev"
    }
  2. リクエストを受信すると、API Gateway は複数のオーケストレーションされた状態を含む AWS Step Functions ワークフローをトリガーします
  3. 最初の状態では、acm-Export という Lambda 関数が実行され、プライベートキー用のパスフレーズを生成します
  4. acm-Export Lambda 関数は、生成されたパスフレーズを Secrets Manager に安全に保存し、そのパスフレーズを使用して ACM 証明書をエクスポートします
  5. acm-Export 関数の完了後、Step Functions ワークフローは ssm-run Lambda 関数を呼び出します
  6. この関数は 2 つの操作を実行します。DynamoDB (インベントリ追跡システムとして機能) で証明書の存在を確認し、レコード管理を行います。既存の certificateARN が見つかった場合、関数は現在の CertExpiryDateLastExportedDate のタイムスタンプ値でレコードを更新します。初めてエクスポートされる証明書の場合、一致するエントリが存在しなければ、Lambda 関数は DynamoDB に新しいレコードを作成します。この新しいレコードには、証明書の詳細と追跡情報を含むメタデータが記録されます。図 4 は、このメタデータがコンソールの DynamoDB テーブルエントリでどのように構造化されているかの例です
図 4: DynamoDB テーブル内の証明書メタデータ

図 4: DynamoDB テーブル内の証明書メタデータ

  1. DynamoDB でのメタデータ検証ステップの後、Lambda 関数は Install-ACMCertificate というカスタム Systems Manager ドキュメントの実行も開始します。このドキュメントは、新しくエクスポートされたパブリック証明書を指定された EC2 インスタンスにインストールする処理を行います。同じ Systems Manager ドキュメントを使用して、オンプレミスサーバーへの証明書のインストールや更新も行うことができ、証明書デプロイの柔軟性を提供します
  2. Systems Manager ドキュメントの実行が成功すると、TargetTagKey に一致する EC2 インスタンスに新しくエクスポートされたパブリック証明書がデプロイされます。デフォルトでは、Linux サーバーでは証明書は /etc/ssl/certs/etc/ssl/private に保存されますが、これらのパスは Systems Manager ドキュメントでカスタマイズできます
  3. Systems Manager ドキュメントの実行が成功した後、Step Functions ワークフローは次の状態に進み、Statuscheck という別の Lambda 関数をトリガーします。この関数は、先に開始された Systems Manager ドキュメントの実行ステータスを監視します。Step Functions ワークフローは、ターゲットの EC2 インスタンスへの証明書のインストールが成功したことを確認した後、実行を完了します

ACM 証明書の更新とエクスポート

図 5: ACM 証明書と更新プロセス

図 5: ACM 証明書と更新プロセス

証明書の有効期限が 60 日以内になると、ACM は自動的に更新プロセスを開始します。ACM が証明書の更新を正常に完了すると、以下の例のように EventBridge でイベントを生成します。


{
	"version": "0",
	"id": "id", 
	"detail-type": "ACM Certificate Available",
	"source": "aws.acm",
	"account": "account",
	"time": "2019-12-22T18:43:48Z",
	"region": "region",
	"resources": [
	"arn:aws:acm:region:account:certificate/certificate_ID"
	],
	"detail": 
	{
		"Action" : "RENEWAL",
		"CertificateType" : "AMAZON_ISSUED", 
		"CommonName": "", 
		"DomainValidationMethod" : "DNS", 
		"CertificateCreatedDate" : "2025-05-22T18:43:48Z",
		"CertificateExpirationDate" : "2026-06-23T18:43:48Z",
		"DaysToExpiry" : 395,
		"InUse" : "TRUE", 
		"Exported" : "TRUE", 
		}
	}

図 5 のワークフローは、既存の ACM パブリック証明書を API 駆動のプロセスでエクスポートし、対象のシステムにデプロイする自動化システムです。

  1. このソリューションでは、証明書の更新通知を監視し、それに応じて acm-renew Lambda 関数をトリガーする EventBridge ルールを使用します。関数は ACM イベントから証明書 ARN を受け取って実行を開始します。この ARN をルックアップキーとして使用し、DynamoDB テーブルをクエリして関連する証明書メタデータを取得します。このクエリから、Certificate Name や、更新された証明書が必要なリソースを識別する TargetTag Key-Value ペアなど、重要な証明書の詳細を抽出します。これらの詳細は、その後の証明書デプロイプロセスに必要であり、更新が正しいシステムに適用されることを確認するのに役立ちます
  2. この情報はペイロードにフォーマットされ、Step Functions ワークフローをトリガーするために使用されます。この Step Functions ワークフローは、ACM 証明書のエクスポートセクションで説明したのと同じプロセスに従います
  3. ステップ 3 から 9 は、ACM 証明書のエクスポートセクションで説明したプロセスに従います。ステップ 9 が正常に完了すると、Step Functions ワークフローは実行を完了します。この時点で、更新されたパブリック証明書はターゲットの EC2 インスタンスに正常にインストールされ、自動化された証明書のエクスポートとインストールプロセスが完了します

ソリューションのダウンロード、実行、証明書エクスポートの検証、AWS アカウントへのデプロイの詳細な手順は、GitHub で入手できます。

料金と利用可能なリージョン

ACM エクスポート可能なパブリック証明書は、AWS 商用リージョン、AWS GovCloud (US) リージョン、および中国リージョンで利用可能であり、前払いなしの従量課金制の料金モデルに従います。ELB、CloudFront、API Gateway などの ACM と統合された AWS サービス向けのパブリック証明書は、引き続き追加料金なしで利用できます。詳細な料金については、AWS Certificate Manager の料金を参照してください。

まとめ

ACM エクスポート可能なパブリック証明書機能により、統合されたマネージド証明書ソリューションで多様なワークロードを保護できるようになりました。EC2、コンテナ、オンプレミスサーバー、他のクラウドプロバイダー向けの証明書エクスポートが可能になったことで、ACM は一元管理、自動更新、コスト効率の高い料金を提供しながら、TLS 管理を簡素化します。ぜひ ACM コンソールでこの機能をお試しいただき、証明書管理ワークフローを効率化してください。

FAQ

ACM はパブリック証明書の有効期間の短縮をサポートしますか?

ACM は、今後数か月以内に CA/Browser Forum の TLS 証明書に関する要件に合わせて、パブリック証明書の有効期間を短縮する予定です。ACM は既に証明書の更新を自動的に処理し、新しい証明書がデプロイ可能になったときに通知する機能を提供しています。Amazon Trust Services (ATS) は、公的に信頼される TLS 証明書の標準が設定される CA/Browser Forum に積極的に参加しています。CA/Browser Forum の要件を満たすため、AWS は以下のスケジュールで TLS 証明書の最大有効期間を適用します。

  • 2026 年 3 月 11 日まで、発行される TLS 証明書の最大有効期間は 398 日
  • 2026 年 3 月 1 日以降、発行される TLS 証明書の最大有効期間は 200 日
  • 2027 年 3 月 1 日以降、発行される TLS 証明書の最大有効期間は 100 日
  • 2029 年 3 月 1 日以降、発行される TLS 証明書の最大有効期間は 47 日

有効期間が短い証明書の料金はどうなりますか?

ACM のエクスポート可能なパブリック証明書をご利用の場合、証明書の最大有効期間の変更に伴うコスト増加についてご懸念があることを理解しています。AWS は ACM を通じて発行される証明書の公正な料金を維持することをお約束します。業界標準の変更に伴い、年間の証明書コストを現在の料金と同等に維持することを目指して、料金体系を適宜調整する予定です。料金変更が適用される前に、詳細をお知らせします。

このブログについてご質問がある場合は、AWS サポートにお問い合わせください。

Pravin Nair

Pravin Nair

Pravin は Data Protection and Privacy のシニアセキュリティソリューションアーキテクトです。お客様のビジネスニーズをサポートする安全でスケーラブルなソリューションの構築を支援しています。保存時および転送時の暗号化、インフラストラクチャセキュリティ、プライバシーに関するバックグラウンドを持っています。

Santosh Vallurupalli

Santosh Vallurupalli

Santosh は AWS のシニアソリューションアーキテクトです。ネットワーキング、コンテナ、移行を専門としており、お客様のクラウド導入の過程を支援し、困難な課題に対するクラウドに特化したソリューションの構築を楽しんでいます。仕事以外では、旅行、F1 観戦、「The Office」を繰り返し視聴することが好きです。

Chandan Kundapur

Chandan Kundapur

Chandan は AWS Certificate Manager (ACM) チームのプリンシパルテクニカルプロダクトマネージャーです。約 20 年のサイバーセキュリティ経験を持ち、AWS のお客様がパブリックおよびプライベート証明書でリソースとエンドポイントを識別し保護できるよう、ACM チームの製品戦略を推進することに情熱を注いでいます。

本ブログは Security Solutions Architect の 中島 章博 が翻訳しました。