いまやWebサイトの常時SSL化が必須な時代です。SSL証明書のないWebサイトでは、Chromeは警告を表示し、Google検索でも表示順位に影響がでます。AWSを利用してWebサイトを開設している場合、常時SSL化された安全なWebサイトを作成するにはどうすればよいのでしょうか? ここでは、AWSでSSL証明書を利用しサイトを常時SSL化(HTTPS化)を実現する方法についてご紹介します。
SSLとは?
SSL(Secure Sockets Layer)とはインターネット上のデータ通信を暗号化する技術です。
SSLとTLSの違い
SSLの脆弱性を解決するため改良されて生まれたのが、SSLの次世代規格となるTLS(Transport Layer Security)になります。TLSは一般的な名称をSSLからTLSに差し替えられることはありませんでした。現在、通称SSLと呼ばれていても実質TLSであることがほとんどであり「SSL/TLS」とも呼ばれています。
常時SSL(https)化対応の重要性
現在、多くのWebサイトにはSSL証明書が設置されています。SSL化はGoogleで推奨しており、日本政府機関のサイトにおいてもSSL化を進めています。SSL証明書を設置すると情報が暗号化され、悪意ある第三者からデータを守ることができて「安心して利用できる、信頼できるWebサイト」として評価されます。
WebサイトのSSL化は無くてはなならないものとなりました。
GoogleのSSL化対応
Googleは、2018年7月リリースの「Chrome 68」から、SSL化されていないすべてのHTTPサイトで「保護されていません」の警告表示をする旨を公表しています。
出典:Chromium Blog:A secure web is here to stay(Thursday, February 8, 2018)
政府機関サイトのSSL化対応
内閣官房内閣サイバーセキュリティセンターは「政府機関等の情報セキュリティ対策のための統一基準群(平成30年度版)」の「政府機関等の対策基準策定のためのガイドライン(平成30年度版)」において、TLS(SSL)機能を適切に用いるよう解説しています。
出典:「政府機関等の対策基準策定のためのガイドライン(平成30年度版)」
※基本対策事項 7.2.2(1)-5
常時SSL化により防止できる3つのサイバー攻撃
WebサイトにSSL証明書が設置されることで、次の3つのサイバー攻撃を防止できます。
1.サイトのなりすまし
他のWebサイトが正しいWebサイトになりすましてユーザーのログインや操作を誘うこと
2.データの改ざん
ユーザーのデータを第三者が途中で書き換えること
3.データの盗聴
第三者が個人情報やCookieなど、暗号化されていないデータを傍受して解読すること
データ改ざん、DDos攻撃などのサイバー攻撃からAWS環境を守る方法・ポイントについて解説した資料「AWS環境のセキュリティ対策をシンプルかつコストパフォーマンスよく実現する方法」
をご用意しています。
パブリック証明書とプライベート証明書の違い
証明書を発行する認証局には、パブリックとプライベートと大きく2つにわかれます。
パブリック証明書
パブリック認証局は監査法人から厳正な審査を受けることで、信頼できる認証局として認められています。そのため、ブラウザには信頼された認証局の証明書がデフォルトでインストールされています。これにより、httpsでウェブアクセスした際に「安全な接続ではありません・・」というような警告メッセージが表示されずに、安全でセキュアな通信を行うことができます。
パブリック証明書を発行する認証局としてグローバルサイン、サイバートラスト、ジオトラストなどがありますが、これらをとおさなくても、AWS Certificate Manager(ACM)で無料のパブリック証明書を発行することができます。
プライベート証明書
プライベート認証局は監査法人による審査を受ける必要はなく、誰でも構築することができます。そのため、その認証局から発行されるプライベート証明書は、一般的には信頼されていません。
ある特定の組織内において、プライベート認証局を信頼することで、無線LAN、リモートアクセス、仮想デスクトップなどへのアクセス時の認証に、電子証明書を使うことができます。証明書の有効期限や用途、属性などを運営者が自由にコントロールできます。
プライベート認証局は、個人や法人でWindowsサーバやLinuxサーバでも構築することはできるものの、管理、運用は非常に煩雑なため、商用製品が数多く存在します。AWS Certificate Manager(ACM)もその一つであり、有料で利用できます。
インフラ担当者の業務負荷を軽減!
AWSにはシステム運用を自動化するサービスが取り揃えられており、本資料では、これら機能の概要をわかりやすく解説します。
AWSでSSL証明書を発行できるAWS Certificate Manager(ACM)とは?
AWS Certificate Manager(ACM)はAWSが提供しているSSL証明書発行サービスです。
AWSのサービスを利用したWebサイトで簡単にSSL対応を行うために、利用されています。AWS Certificate Manager(ACM)が発行したSSL証明書は、AWSのいくつかのサービスや、ユーザーのプライベートネットワークリソースに導入することができます。
AWSを利用してWebサイトを開設している場合は、SSL証明書の発行を行う専門業者ではなくAWS Certificate Manager(ACM)を使うことで、安価もしくは無料で簡単にSSL対応やSSL証明書の更新を行うことができます。
AWS Certificate Manager(ACM)はAWS Certificate Manager(ACM)プライベートCAというプライベート認証機関により、プライベートのSSL/TLS証明書の発行、管理、導入を行うことも可能です。
AWS Certificate Manager(ACM)を使う目的
AWS Certificate Manager(ACM)を使うのには、次のような目的があります。
Webサイトの保護とセキュリティ確保
SSL/TLSの通信プロトコルにより、データの暗号化と認証を行います。それによってWebサイトを保護し、通信の安全を確保することが可能です。
内部リソースの保護とセキュリティ確保
プライベートのSSL/TLS証明書により、プライベートネットワークとそこに接続された機器を保護し、安全を確保します。
コンプライアンス要件を満たすのに役立つ
データを暗号化することで、各種の規制やコンプライアンス要件に対応します。
AWS Certificate Manager(ACM)で使えるサービス
AWS Certificate Manager(ACM)を使ってパブリックなSSL/TLS証明書を発行できるのは、次の5つのサービスです。※2021年11月現在
対応サービスの詳細についてはAWSサイトをご参照ください。
・ELB(Elastic Load Balancing)
・Amazon CloudFront
・Amazon API Gateway
・AWS Elastic Beanstalk
・AWS CloudFormation
その他のサービスについては、プライベートなSSL/TLS証明書のみの発行となります。パブリックなSSL/TLS証明書が必要な場合は、外部機関の証明書を購入するか、上の5つのサービスを組み合わせてAWS Certificate Manager(ACM)を利用することになります。
SSL証明書の発行が簡単になる
通常、SSL証明書を導入する場合はSSL証明書サービスの申し込み、サーバーでのCSR発行、証明書発行の申請手続き、サーバーへの設置作業、さらには毎年の更新手続きと手間のかかる作業です。
AWS Certificate Manager(ACM)の場合、管理画面で数回クリックするだけで、SSL/TLS証明書の発行をリクエストできます。必要な認証やサービスへの導入は、AWS Certificate Manager(ACM)により自動的に行われるので、リクエストの処理が簡単です。
SSL証明書が自動更新できる
AWS Certificate Manager(ACM)が発行し、EC2やIoTデバイスで使われているSSL/TLS証明書は、必要に応じて自動的に更新され、再度導入されます。
更新作業を忘れたために、更新期限が切れて Web サービスにアクセスできなくなるようなヒューマンエラーを無くすことができます。
AWS Certificate Manager(ACM)で利用できる無料のSSL証明書
AWS Certificate Manager(ACM)で発行したSSL/TLS証明書をAWSのサービス内で利用する場合、料金はかかりません。ただし、利用しているAWSサービスの料金がかかります。
無料で使えるパブリックなSSL/TLS証明書
AWS Certificate Manager(ACM)によるSSL/TLS証明書の発行は無料です。
ただし、AWS Certificate Manager(ACM)でパブリックなSSL/TLS証明書を利用するためには、先ほどご紹介したAWSの5つのサービスの利用が前提となり、その費用は必要になります。
ワイルドカード証明書も無料で発行できますが、ネイキッドドメイン(ホスト名が付かない状態のドメイン)は保護されません。
プライベート証明書は有料
AWS Certificate Manager(ACM)プライベート認証機関(CA)を利用してプライベートなSSL/TLS証明書を発行する場合は、料金がかかります。
プライベート認証機関の料金は、400USD/月です。プライベート認証機関を削除するまで料金がかかります。
プライベートキーにアクセスのあるAWS Certificate Manager(ACM)プライベート証明書は、料金が変動し、枚数が多くなるほど単価が必要です。プライベートキーにアクセスのないAWS Certificate Manager(ACM)プライベート証明書には、料金がかかりません。
無料利用期間で使えるプライベート証明書
プライベート証明書には無料利用期間あります。
プライベート認証機関には、30日間の無料利用期間があります。無料利用期間内でも、プライベートなSSL/TLS証明書を発行すれば、料金が必要です。
AWS Certificate Managerを使ってWebサイトをSSL対応にするときのサービス組み合わせ
AWSを使って開設したWebサイトにSSL対応を行うときの構成例で、基本的なものをご紹介します。
ELBとAmazon EC2を使う場合
ELB(Elastic Load Balancing)とAmazon EC2を組み合わせてSSL対応したWebサイトを開設できます。
あらかじめ、AWS Certificate Manager(ACM)でSSL証明書を作成しておきます。ELBを設定する管理画面でAWS Certificate Manager(ACM)で発行されたパブリックなSSL/TLS証明書を選択することで、WebサイトでSSLを利用することが可能です。
CloudFrontとAmazon S3を使う場合
Amazon CloudFrontにAWS Certificate Manager(ACM)からパブリックなSSL/TLS証明書を発行し、Amazon S3と組み合わせます。
Amazon CloudFrontはグローバルコンテンツ配信ネットワーク (CDN)なので、常にキャッシュを保持しています。そのため、SSL/TLS証明書を更新するときには注意が必要です。
更新時に証明書と関連づいている AWS リソースが、インターネット経由で SSL/TLS 接続できるようになっていない場合、AWS Certificate Manager(ACM)側が接続先を正しく特定できず、DNS検証での更新に失敗する可能性があります。DNS検証に失敗すると、証明書ドメインのオーナーに対して、証明書更新方法を記載した検証用メールが送付されます。
出典:AWS Certificate Manager (ACM) 証明書の自動更新時の注意点
AWS Certificate Manager(ACM)のSSL/TLS証明書を使えない場合
Amazon EC2やAmazon Lightsail、Amazon S3のサービスを単体で利用したWebサイトでは、AWS Certificate Manager(ACM)でパブリックなSSL/TLS証明書を発行することはできません。次のような方法があります。
ひとつは、外部の認証機関からSSL/TLS証明書を発行してもらい、サーバーに組み込む方法です。SSL/TLS証明書を取得するためのコストはかかりますが、構成はシンプルになります。
もうひとつは、ELBやAmazon CloudFrontを組み合わせてWebサイトを開設する方法です。AWS Certificate Manager(ACM)からパブリックなSSL/TLS証明書を発行することができます。
なお、組織認証 (OV) や拡張認証 (EV) のパブリック証明書は、AWS Certificate Manager(ACM) で提供されていません。また、メールの暗号化に利用することはできません。注意点の詳細はAWSサイトをご参照ください。
AWS Certificate Manager(ACM)での設定(SSL証明書作成)について
Amazon EC2+ELB(Elastic Load Balancing)を組み合わせてAWS Certificate Manager(ACM)で発行されたSSL/TLS証明書を使う場合のおおまかな設定の流れをご紹介します。
前提
・ドメインはAWSのRoute 53で取得、管理する
・Amazon EC2インスタンス作成済み
1.ドメインをRoute53で取得
AWSサイト ドメイン名の登録を参考にAmazon EC2のElastic IPの取得、及び Route53 でのドメイン取得を行います。
※ここではDNSの設定は行いません。(4.のELB設定の後に行います。)
2.AWS Certificate Manager(ACM)でパブリックSSL証明書を取得
AWSサイト パブリック証明書をリクエストするを参考にRoute53で取得したドメインのSSL証明書を取得します。
3.Elastic Load Balancing(ELB)の作成及び、取得したSSL証明書を設定
AWSサイト Application Load Balancer の作成を参考に管理画面からElastic Load Balancing(ELB)を作成します。
作成する際に、SSL証明書を選択できる画面が出てきますので、AWS Certificate Manager(ACM)で作成したSSL証明書を選択します。
4.Route 53でDNS設定
Route 53でAレコードのエイリアス設定を行う
1.のドメイン取得で参考にしたAWSサイト ドメイン名の登録内の「ステップ 3: DNS を設定する」で「完全修飾ドメイン名 (FQDN)」の手順に沿って設定します。
※「静的IPアドレス」を選択しないよう注意
AWS Certificate Managerを使うのが、最も手軽なSSL証明書の管理方法
これまでWebサイトを常時SSL化するには、有料でSSL証明書を発行したり、処理に時間がかかったりして、なかなか気軽に取りかかれるものではありませんでした。しかし、AWS Certificate Manager(ACM)を使えば、数回クリックするだけでSSL証明書の発行が済んでしまいます。また、AWS Certificate Manager(ACM)を利用したHTTPSには料金がかかりませんので、非常に簡単にWebサイトの常時SSL化に取り組むことができます。
当社、NHNテコラスでは、AWSの活用を支援する各種サービスを展開しており、経験豊富なエンジニアがインフラの課題や運用状況、コストに合わせてAWSの運用方法をご提案しております。ぜひお気軽にご相談ください。
▼ エンジニアの運用負担を軽減!AWSセキュリティのベストプラクティスもご提案する運用代行サービス!