AWS Certificate Manager (ACM)にインポートしたSSL/TLS証明書の更新方法について

こんにちは、坂巻です。

今回は、AWS Certificate Manager(以下、ACM)を利用した、
SSL/TLS証明書の更新方法についてご紹介します。

はじめに

ACMはSSL/TLS証明書のプロビジョニング、管理、およびデプロイを行うサービスです。
ACMに証明書をリクエストすれば、無料で簡単に証明書を取得することができます。
また、ACMで発行された証明書は、失効前に自動更新されます。

ただし、現時点では実在認証(EV)、組織認証(OV)の証明書は提供していません。

AWS Certificate Manager

ACM 証明書の特徴

EV、OV証明書を利用する場合には、
サードパーティーの認証機関(CA)が発行した、証明書をACMにインポートする必要があります。

今回は、サードパーティーで発行された証明書の期限切れを想定して、
マネジメントコンソールから証明書の更新を実施してみたいと思います。

証明書のインポート

証明書のインポートで更新を行うには、ACMに証明書をインポートして、
SSLをターミネーションするAWSリソース(ELBやCloudFront等)側で、証明書の関連付けを行います。

この方法は、関連づけられている証明書に変更を加えないため、
事前の検証や、切り戻しがすぐに行えることがメリットとして挙げられます。

今回はELBに証明書がデプロイされている構成を想定し、手順を進めていきます。

ACMコンソールより「証明書のインポート」をクリックします。

証明書のインポート

以下を参考に、サードパーティーで発行された証明書の情報を入力します。
証明書の情報を入力後「レビューとインポート」をクリックします。

証明書本文
証明書の本文の情報を入力します。
「-----BEGIN CERTIFICATE-----」で始まり、「-----END CERTIFICATE-----」で終わります。

証明書のプライベートキー
証明書の秘密鍵の情報を入力します。
「-----BEGIN PRIVATE KEY-----」で始まり、「-----END PRIVATE KEY-----」で終わります。

証明書チェーン
中間証明書の情報を入力します。
「-----BEGIN CERTIFICATE-----」で始まり、「-----END CERTIFICATE-----」で終わります。

レビューとインポート

「インポート」をクリックします。

インポート

なお、誤った情報を入力した場合は、
「レビューとインポート」のクリック後に、以下のようなエラーが出力されます。

エラー

レビューでエラーが検出された際は、以下を確認しましょう。

証明書のインポートの問題のトラブルシューティング

正常にインポートされれば、ACMコンソールに証明書のレコードが追加されます。

インポート完了

次は、AWSリソース側で、関連付けを変更する作業です。
対象のELBを選択し「リスナー」、「編集」をクリックします。

証明書変更

「変更」をクリックします。

変更

「ACMから証明書を選択する」をクリックします。

ACMから証明書を選択する

「証明書」からACMに新たにインポートした証明書を選択し、「保存」をクリックします。

ACMから証明書を選択する

リスナーの更新完了を確認し「閉じる」をクリックします。

ACMから証明書を選択する

以上で、証明書の更新は完了です。
ブラウザ等で更新したドメインにアクセスし、証明書が更新されていることを確認しましょう。

確認

なお、証明書の関連付け変更後に、ドメインにアクセスができなくなった場合は、
同様の手順で証明書の関連付けを変更し、元の証明書に戻しましょう。

証明書のインポートの事前検証

証明書のインポートの場合、SSLをターミネーションするAWSリソースを準備すれば、事前検証が行えます。 検証用のドメインは準備せず、ELBにデプロイして検証してみたいと思います。

上記、証明書のインポートの手順でACMに証明書のインポート、ELBに証明書をデプロイします。
ELBのDNS名を確認します。

検証

証明書チェックサイト(Check your SSL/TLS certificate installation)にアクセスし、
先程確認したDNS名を入力し「Check」をクリックします。

チェック

証明書に設定されたコモンネーム(暗号化通信を行うサブドメインを含むドメイン部分)と、
SSL接続の際のドメインが異なるため、エラーメッセージが出力されますが、証明書の検証は行えます。

検証

検証が済んだら、ACMにインポートした証明書以外の準備した環境は削除しましょう。

証明書の再インポート

証明書の再インポートでは、AWSリソースとの関連付けを維持しながら、証明書の更新を行うことができます。 そのため、1つの証明書で多数のサブドメインを暗号化(ワイルドカード証明書)している場合等、 AWSリソース側での関連付け作業が不要になるため、作業漏れを回避できるメリットが挙げられます。

ただし、稼働中の証明書に対して変更を加えるため、
切り戻しを考慮して、更新前の証明書が揃っていることを確認してから実施するようにしてください。

それでは、証明書の再インポート手順となります。

ACMコンソールより更新対象の証明書を選択して、
「アクション」、「証明書の再インポート」クリックします。

証明書の再インポート

上述の証明書インポート時と同様に、証明書の情報を入力し「レビューとインポート」をクリックします。 入力

新しい証明書の値を確認して「インポート」をクリックします。 入力

証明書の情報が更新されたことを確認し、
上述の証明書インポート時同様に、ドメインにアクセスできることを確認しましょう。 入力

おわりに

証明書のインポートでは事前の検証や、切り戻しがすぐに行えますが、
証明書がデプロイされたAWSリソースが多数ある場合、作業漏れのリスクが潜みます。

証明書の再インポートでは、AWSリソース側での関連付け作業漏れを回避できるものの、
更新前の証明書の情報が確実に揃っている必要があります。

どちらも一長一短ありますので、関連づけされているリソース数等、
ユースケースに合わせて適切に判断し作業を実施するようにしてください。