ACMに証明書をインポートしてお手軽に証明書利用

記事タイトルとURLをコピーする

寒さもひとしお身にしみるころ、皆様いかがお過ごしでしょうか。
ブログでははじめまして技術4課の酒井です。
去る10月13日にAWS Certificate Manager(以降 ACM)にサードパーティのサーバ証明書がインポートできる機能が追加されました。
これによりこれまではマネジメントコンソールから確認できなかったAWSにインポートされたサードパーティのサーバ証明書の有効期限や利用状況などが確認できるようになりサーバ証明書の管理が非常に楽になりました。
では実際にインポートの手順についてみていきましょう。

サードパーティのサーバ証明書の取得

各社で様々な種類のサーバ証明書が用意されておりますので用途に合わせて取得しましょう。
注意点として複数台のサーバにサーバ証明書をインストールする場合やロードバランサやCDNサービスにインストールする場合、各ベンダーごとにサーバ証明書のライセンス形態がことなります。
ライセンス違反にならない形でご利用いただくためにも各ベンダーにご確認の上ご利用ください。

ファイルの準備

証明書の取得が完了したらいよいよインポート作業になります。
必要なファイルは以下の3つです。

  • 証明書ベンダーより送られてきたサーバ証明書
  • 証明書ベンダーより指定された中間証明書
  • CSR作成時に作成した秘密鍵

これらを全てpem形式で準備しましょう。 また、秘密鍵はパスフレーズを抜いた形でご用意ください。

インポート画面へ移動

マネジメントコンソールからACMの管理画面へと移動し証明書のインポートをクリックします。
ACMで管理している証明書がない場合は以下のスクリーンショットのように

acmss001

既にACMで管理している証明書がある場合は以下のスクリーンショットのような画面が表示されます。

acmss005

それぞれ証明書のインポートの位置が異なっていますのでご注意ください

各ファイルを貼り付け

事前に準備したそれぞれのファイルをテキストエディタなので開き中身をそれぞれコピーアンドペーストします。
上から順番に証明書ファイル、秘密鍵のファイル、中間証明書のファイルをコピーアンドペーストしていきます。

acmss002

コピペが完了したらレビューとインポートをクリックします。

インポートした証明書内容を確認

acmss003

正常にインポートできるとドメイン名や有効期限までの日数など証明書の情報が表示されます。
ドメイン名に間違いがないことを確認してインポートをクリックしましょう。

インポート完了

acmss004

無事インポートが完了すると証明書一覧に表示され種類がインポート済みとなったものが表示されます。
選択肢展開するとドメイン名や有効期限、有効期限までの日数やARNなど詳細な情報が表示されています。
また、使用中の項目についてはELBやCloudFrontなどに適用されているか否かを示しています。

注意点

ACMはリージョン依存のサービスです。
東京リージョンにインポートした証明書は東京リージョンのELBにのみ適用できます。
他のリージョンで証明書を利用する場合は同じ手順で別リージョンにインポートする必要があります。
また、CloudFrontを利用する場合はバージニアのACMにインポートする必要があるのでこれまた注意が必要です。
なお、インポートした証明書ファイルや秘密鍵のファイルはACMからダウンロードすることはできません。
EC2にインストールする必要がある場合は取り扱いに注意し大切に保存しておきましょう。

また、現在のところインポートされたサーバ証明書は期限が迫るとACMの管理画面に警告が表示されますがCloudWatchやSNSを利用して通知することはできません。 証明書ベンダーから通知される更新のお知らせはACMに表示される警告を見落とさないようにしましょう。

更新する場合は証明書ベンダーから証明書を取得し再インポートすることで新しい証明書に差し替えられます。 Amazonが発行する証明書とことなり自動更新されませんので注意が必要です。

まとめ

インポート作業も非常に簡単に行えるようになったのでサードパーティ製のサーバ証明書もこれまでより手軽に証明書を利用できるようになりました。
ACMを利用することでリージョンごとにサーバ証明書を一括管理できるようになりこれまで以上に手間なく証明書を管理することができます。
ACMをうまく活用し証明書のうっかり失効をなくしたいですね。

"; doc.innerHTML = entry_notice + doc.innerHTML; }
' } }) e.innerHTML = codeBlock; });