AWSの証明書運用サポートAWS Certificate Manager(ACM)とは

最近ではURLが"https://"ではなく"http://"から始まるWebサイトにアクセスする場合にブラウザが警告を表示するなど、常時SSL/TLSが基本となっています。
WebサイトがブラウザとSSL/TLSで通信できるようにするためには、Webサーバーに証明書に関する設定を行う必要があります。
SSL/TLSは公開鍵基盤(public key infrastructure: PKI)と呼ばれる仕組みによって支えられており、公開鍵基盤において証明書は重要な役割を担います。
この記事では、SSL/TLS証明書の仕組みについて解説すると共に、Amazon Web Services (AWS)における証明書の運用をサポートするサービスであるAWS Certificate Manager (ACM)について紹介します。

SSL/TLS証明書の仕組み

公開鍵暗号方式

暗号化の方式は「共通鍵暗号方式」と「公開鍵暗号方式」の大きく2つに分けられ、共通鍵暗号方式では暗号化と復号化に同じ一つの鍵を使用するのに対し、公開鍵暗号方式では暗号化と復号化に別々の2つの鍵を使用します。
公開鍵暗号方式においてこれら2つの鍵はそれぞれ「公開鍵」と「秘密鍵」と呼ばれ、公開鍵は外部に公開するのに対し、秘密鍵は自分だけの秘密にします。
公開鍵暗号方式において通信内容を暗号化するためには、送信者は送信するデータを受信者の公開鍵を使って暗号化した上で送信し、受信者は受信したデータを受信者自身の秘密鍵を使って復号化します。
受信者の秘密鍵は受信者だけの秘密であり、受信者の公開鍵によって暗号化されたデータを受信者だけしか復号化することができないため、暗号化の目的が達成されます。
以上のように、暗号化を行うことによって情報セキュリティの3要素の一つである「機密性」を確保することができます。

電子署名

情報セキュリティにおいて機密性と並んで重要なのが「完全性」であり、完全性を確保する方法の一つとして「改ざん防止」があります。
公開鍵暗号方式において通信内容の改ざんを防止するためには、送信者が送信者自身の秘密鍵によって暗号化されたデータ(「電子署名」と呼ばれます)をオリジナルのデータと共に送信し、受信者が受信した電子署名を送信者の公開鍵を使って復号化した上でオリジナルのデータと一致するかどうかを確認します。
送信者の秘密鍵は送信者だけの秘密であり、送信者だけしか電子署名を生成することができないため、改ざん防止の目的が達成されます。
先に述べたように、暗号化の手順では、送信者は「受信者の公開鍵」を使用して送信するデータを暗号化し、受信者は「受信者自身の秘密鍵」を使用して受信したデータを復号化します。
これに対し、電子署名の手順では、送信者は「送信者自身の秘密鍵」を使用して送信するデータを暗号化し、受信者は「送信者の公開鍵」を使用して受信したデータを復号化します。
このように、暗号化と電子署名では行うプロセスは同じですが、暗号化と復号化に使用する鍵の組み合わせが異なると共に、前者は機密性の確保、後者は完全性の確保と役割も異なります。

証明書の作成プロセス

証明書を作成するためには、まず、証明書の申請者が証明書署名要求(certificate signing request: CSR)を作成します。
なお、CSRには、証明書の申請者の公開鍵やCommon Nameと呼ばれるWebサーバーのドメイン名に加え、証明書の申請者の秘密鍵を使用して生成された電子署名などが含まれます。
次に、証明書の申請者はCSRを「認証局」(certificate authority: CA)と呼ばれる証明書の発行者へ送信し、認証局は受信したCSRに含まれる情報をもとに証明書を作成して返送します。
なお、認証局から返送される証明書には、CSRに含まれる証明書の申請者の公開鍵やCommon Nameに加え、有効期限や認証局の情報、認証局の秘密鍵を使用して生成された電子署名などが含まれます。
CSRや証明書に申請者や認証局の秘密鍵が含まれることはありません。

証明書の使用プロセス

証明書を使用するためには、証明書の所有者がWebサーバーなどのサーバーに証明書をアップロードし、SSL/TLSの通信時にアップロードした証明書と共に証明書の作成時に使用した秘密鍵を参照するように設定を行います。
サーバーはブラウザなどのクライアントからSSL/TLSによる接続要求を受信した際、クライアントへ証明書を送信します。
クライアントはサーバーから受信した証明書に含まれる認証局の署名を検証し、証明書に含まれるサーバーの公開鍵やCommon Nameが改ざんされていないことを確認します。
確認後は、その後の通信のために一時的に使用する共通鍵を生成し、サーバーの公開鍵を使用して暗号化してサーバーへ送信します。
なお、多くのクライアントは信頼する認証局のリストを備えており、このリストに含まれない認証局が発行した証明書を受信した場合には警告を表示するような仕様になっています。

AWS Certificate Managerについて

前段では、SSL/TLS証明書の仕組みについて解説しました。
SSL/TLS証明書の仕組みは少し複雑ですが、仕組みを正しく理解することは証明書に関する問題解決に役立ちます。
SSL/TLS証明書の多くは有効期限が発行から数ヶ月から1年間程度であり、定期的な更新手続きが必要となります。
AWSでは証明書の運用をサポートするサービスであるAWS Certificate Manager (ACM)が提供されており、以下、このサービスの概要や使い方について紹介します。

サービスの概要

ACMはAWSの証明書管理サービスであり、AWSを使うことによって証明書の発行や発行した証明書の自動更新を行うことができます。
ACMを使用して発行した証明書は、AWSのコンテンツ配信ネットワークサービスであるAmazon CloudFrontやAWSのロードバランササービスであるElastic Load Balancingを自社が保有するドメインで運用する場合などに使用することができます。
ACMプライベート認証機関サービスを利用する場合を除いてACMの利用には料金が発生しないため、証明書を発行や更新の費用を支払うことなくAWS内で運用しているWebサイトやWebサービスなどを常時SSL/TLS化することができます。

ACMサービスの使い方

ACMを利用するためには、WebコンソールからACMのページへアクセスします。
ACMのページが表示された後、「証明書のプロビジョニング」をクリックします。
証明書のリクエストページされた後、「パブリック証明書のリクエスト」にチェックが入っていることを確認してから「証明書のリクエスト」ボタンをクリックします。
ドメイン名の追加ページが表示された後、ドメイン名を入力してから「追加」ボタンをクリックします。
検証方法の選択ページが表示された後、「DNSの検証」または「Eメールの検証」のいずれかを選択してから「次へ」ボタンをクリックします。
タグを追加ページが表示された後、必要に応じてタグ名と値を入力してから「確認」ボタンをクリックします。
確認ページが表示された後、「確定とリクエスト」をクリックします。
リクエスト完了後、検証方法の選択ページで選択した検証方法に従ってリクエストを検証します。

他のAWSサービスとの統合

AWSではDNSサービスとしてAmazon Route 53が提供されており、ACMでリクエストした証明書に含まれるドメイン名のネームサーバーがAmazon Route 53で運用されている場合、ボタン一つでリクエストを検証することができ、DNSの検証の際に必要なDNSレコードの登録などの手間を省くことができます。
また、ACMで発行した証明書をAmazon CloudFrontで使用する場合、米国東部 (バージニア北部) us-east-1で発行された証明書を利用することができます(逆に言うと、us-east-1で発行された証明書しか利用できません)。

おわりに

証明書の更新はそれほど頻繁に行う作業ではないため忘れがちな作業ですが、証明書が意図せずに期限切れとなった場合にはアクセス時に警告が表示されるなどの影響が発生します。
AWSにおける証明書の運用ではACMを利用し、できる限り自動で更新が行われるように設定することが望まれます。

24時間365日対応可能なクラウド監視・運用代行で、あなたをシステム運用から解放します!

ネットワークからクラウドまでトータルサポート!!
NTT東日本のクラウド導入・運用サービスを確認してください!!

Amazon Web Services(AWS)、Microsoft Azureの
導入支援サービスのご相談、お問い合わせをお待ちしております。

ページ上部へ戻る