セキュリティ サーバー ネットワーク 公開日 2026.06.29 更新日 2026.06.29

AWSでHTTPS化するベストプラクティス|ACM・CloudFront・ALBで常時HTTPSにする構成と注意点

AWSでサイトやアプリをHTTPS化するときのベストプラクティスを、実務目線で整理。ACMの無料証明書と自動更新、CloudFront/ALBでのTLS終端、HTTPからHTTPSへのリダイレクト、TLSポリシーの最小化、HSTS、Route 53のalias、混在コンテンツや証明書更新の落とし穴まで、具体的な構成と注意点を解説します。

先に要点

  • AWSでのHTTPS化の基本形は、ACMで無料の証明書を発行し、CloudFrontALB(ロードバランサー)でTLSを終端すること。証明書の運用は自動更新に乗せます。
  • TLSEC2の中ではなく「入口」(CloudFront / ALB)で終端するのが定石。サーバー側の証明書管理をなくし、更新忘れの事故を防げます。
  • HTTPは必ずHTTPSへリダイレクトし、古いTLS(1.0/1.1)はセキュリティポリシーで切りHSTSヘッダで常時HTTPSを強制します。
  • つまずきやすいのは、CloudFront用の証明書はバージニア北部(us-east-1)で発行が必須という点と、混在コンテンツ(mixed content)証明書の更新忘れ。ここを押さえれば事故はほぼ防げます。

AWSで動かしているサイトをHTTPSにしたいが、証明書をどこに置けばいいのか、何をどう設定すれば「正しい」HTTPS化なのか分かりにくい ── HTTPS化はやることが複数の場所に散らばるため、つまずきやすいテーマです。

この記事では、AWSでサイトやWebアプリ常時HTTPS(全ページHTTPS) にするためのベストプラクティスを、証明書の発行から、TLSをどこで終端するか、リダイレクト、TLSポリシー、HSTS、Route 53、そして実際に踏みやすい落とし穴まで、実務目線で順番に整理します。AWSのマネジメントコンソールは画面名が頻繁に変わるので、本記事では細かいクリック手順より 「何を・どこで・なぜ設定するか」 を主役にします。

HTTPS化の全体像 — どこで暗号化を「終端」するか

最初に全体像です。HTTPS化で一番大事な判断は、TLS(暗号化)をどこで終端するかです。終端とは「暗号化された通信をほどいて中身のHTTPに戻す場所」のことです(TLS終端)。

AWSでは、利用者にいちばん近い 入口(CloudFrontALB)でTLSを終端し、そこから内側(オリジンEC2コンテナ)へ流すのが基本です。

読み込み中...

入口で終端すると、証明書の管理を1か所(しかもマネージド)に集約でき、サーバー側で証明書を更新する手間と事故がなくなります。以下、この形を作るためのベストプラクティスを順に見ていきます。

① 証明書は ACM で無料・自動更新にする

AWSでHTTPS化するなら、証明書は AWS Certificate Manager(ACM) で発行するのが基本です。理由はシンプルで、ACMのパブリック証明書は無料で、しかも 自動更新に対応しているからです。SSL証明書の更新忘れは実際に多いトラブルですが、ACMはここを仕組みで解決します。

最重要の注意: CloudFront用証明書はus-east-1で発行する

CloudFrontに紐づける証明書は、必ずバージニア北部(us-east-1)リージョンのACMで発行しなければ選択肢に出てきません。東京リージョン(ap-northeast-1)で作った証明書はCloudFrontから選べず、「証明書が出てこない」とハマる定番ポイントです。一方、ALBAPI Gatewayに紐づける証明書は、そのリソースと同じリージョンで発行します。

発行時のポイントは次の通りです。

  • 検証方法はDNS検証を選ぶ ── ACMが指定するCNAMEレコードをドメインに追加すると所有確認が済みます。Route 53を使っていれば1クリックでレコードを入れられます。DNS検証なら、検証レコードを消さない限りACMが自動で更新してくれます(メール検証は自動更新の扱いが弱いので避けます)。
  • ワイルドカードかSANか ── *.example.com のワイルドカード証明書にすると、サブドメインを増やしても証明書を取り直さずに済みます。複数の異なるドメインをまとめたいときは、SAN(複数ドメインを1枚に入れる)で発行します。
  • 証明書はオリジンにも置ける ── 入口〜オリジン間も暗号化したい(エンドツーエンド)場合、オリジン側にも証明書を置きます。社内向けや要件が厳しい場合はここまでやりますが、まずは入口終端から始めて問題ありません。

TLSは「入口」で終端する(EC2で抱えない)

証明書をEC2の中(NginxApache)に置いて自前で終端することもできますが、基本は避けます。更新の自動化を自分で組む必要があり、更新忘れやリロード忘れで止まる事故の温床になるからです。

読み込み中...

CloudFrontALBは併用もできます。CloudFront(エッジで終端・キャッシュWAF)→ ALB(TLS終端・振り分け)→ EC2/ECS という多段構成は、規模が出てきたWebアプリの定番です(構成の段階はALB vs API Gateway vs CloudFrontも参考に)。

③ HTTPは必ずHTTPSへリダイレクトする

HTTPS証明書を付けても、http:// でアクセスできるままだと「常時HTTPS」になりません。80番(HTTP)へ来たアクセスは443番(HTTPS)へ恒久リダイレクトします。

  • CloudFrontの場合 ── ビヘイビアの Viewer Protocol PolicyRedirect HTTP to HTTPS に設定します。これだけでHTTPアクセスがHTTPSへ振り替わります。
  • ALBの場合 ── 80番のリスナーに「443へリダイレクト(HTTPS、ステータス301)」のルールを追加します。アプリ側でリダイレクトを書く必要はありません。

入口でリダイレクトを完結させるのがポイントです。アプリのコードでリダイレクトを書くと、ヘルスチェックやリダイレクトループの調整が面倒になります。

④ 古いTLSを切る(セキュリティポリシー)

HTTPSにしても、TLS 1.0 / 1.1のような古いプロトコルを許したままでは安全とは言えません。CloudFrontもALBセキュリティポリシー(SSL/TLSポリシー) で、受け付ける最小TLSバージョンと暗号スイートを選べます。

  • 最小TLS 1.2以上を基本にします。要件が許せばTLS 1.3に対応したポリシーを選びます。
  • CloudFrontでは独自ドメイン利用時に TLSv1.2_2021 系などの新しいポリシーを選びます。ALBでも新しい ELBSecurityPolicy 系を選びます。
  • 古い端末対応で1.0を残す要件がない限り、1.2未満は切るのが現在の標準です。

⑤ HSTSで常時HTTPSを強制する

リダイレクトを入れても、利用者が最初に http:// でアクセスした一瞬は平文です。これを塞ぐのが HSTS(HTTP Strict Transport Security) です。Strict-Transport-Security レスポンスヘッダを返すと、ブラウザは以後そのドメインへ 最初から必ずHTTPSで 接続するようになります。

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
  • 付与する場所 ── CloudFrontなら レスポンスヘッダーポリシーでHSTSを付けられます(アプリを触らずに設定可能)。ALB配下ならアプリやNginxで付与します。
  • max-age ── 秒数。1年(31536000)が一般的。まずは短め(数時間〜1日)で様子を見て、問題なければ延ばすと安全です。
  • includeSubDomains / preload は慎重に ── includeSubDomainsは全サブドメインがHTTPS必須になります。HTTPでしか動かないサブドメインがあると到達不能になるため、棚卸ししてから付けます。preloadはブラウザ組み込みリストへの登録で、解除に時間がかかるので、全サブドメインのHTTPS化が完了してから最後に付けます。

Route 53でaliasを入口に向ける

独自ドメインを使うなら、DNSの向き先も整えます。Route 53のエイリアス(alias)レコードで、ドメインをCloudFrontディストリビューションやALBに向けます。aliasはAWSリソースを直接指せて、ゾーンApex(example.com そのもの)にも使えるのが利点です。詳しくはRoute 53とはで解説しています。

DNSを切り替える本番作業では、切り替え後の確認も忘れずに(DNS切り替え後のチェックリスト)。

⑦ 混在コンテンツ(mixed content)を残さない

HTTPS化でいちばん多い「鍵マークが付かない」原因が 混在コンテンツ(mixed content) です。ページ本体はHTTPSなのに、中で読み込む画像・CSS・JSAPIのURLが http:// のままだと、ブラウザが警告を出したり読み込みをブロックしたりします。

  • ソース内の http://example.com/... のようなハードコードを https://プロトコル相対(//)、できれば相対パスに直します。
  • 外部から読むスクリプトやフォントもHTTPSのURLにします。
  • 自前のリダイレクトとCloudFront/ALBのリダイレクトが二重になって リダイレクトループにならないか確認します(アプリ側の「HTTPならHTTPSへ」を入口と二重に持たない)。

ブラウザの開発者ツールのコンソールに Mixed Content 警告が出ていないかを必ず確認します。

⑧ 証明書の更新を「忘れない」仕組みにする

最後に運用です。ACMのDNS検証証明書は自動更新されますが、前提として「検証用のCNAMEレコードを消さないこと」が必要です。これを消すと自動更新が止まります。

  • ACMの証明書は Certificate Managerの画面で「更新状況」を確認できます。
  • 何らかの事情で EC2に自前証明書を置いている場合は、ACMの自動更新は効きません。期限監視と更新の自動化を別途用意します(SSL証明書の更新忘れと自動化)。
  • 証明書の中身や期限は openssl s_client -connect example.com:443 などでも確認できます(デジタル証明書とは)。

ベストプラクティス チェックリスト

読み込み中...

この順で整えると、AWS上で「全ページHTTPS・古い暗号は切る・更新は自動」という、現在の標準的なHTTPS構成になります。さらに前段にWAFを足すならAWS WAF入門も組み合わせます。

AWSでHTTPS化するときのよくある質問

Q. AWSのHTTPS証明書は無料ですか?

A. AWS Certificate Manager(ACM)で発行するパブリック証明書は無料です。発行・更新ともに費用はかかりません。ACMの証明書はCloudFront、ALB、API Gatewayなどに紐づけて使います。無料なのは証明書自体で、CloudFrontやALBの利用料・転送量は別途かかります。

Q. 証明書はどこのリージョンで作ればいいですか?

A. CloudFrontに紐づける証明書は、必ずバージニア北部(us-east-1)で発行します。ほかのリージョンで作るとCloudFrontの設定画面で選択肢に出てきません。ALBやAPI Gatewayに紐づける場合は、そのリソースと同じリージョンで発行します。「証明書が選べない」ときはまずリージョンを疑ってください。

Q. TLSはEC2で終端してはいけないのですか?

A. 禁止ではありませんが、基本は避けます。EC2で自前終端すると証明書の発行・更新・リロードを自分で運用することになり、更新忘れで全停止する事故が起きやすいためです。CloudFrontやALBで終端すれば、ACMの無料証明書と自動更新に乗せられ、運用が大きく楽になります。特殊要件がない限り入口終端を推奨します。

Q. HTTPからHTTPSへのリダイレクトはどう設定しますか?

A. CloudFrontならビヘイビアのViewer Protocol Policyを「Redirect HTTP to HTTPS」にします。ALBなら80番リスナーに「443へ301リダイレクト」のルールを追加します。どちらも入口側で完結するので、アプリのコードにリダイレクト処理を書く必要はありません。

Q. HSTSは付けたほうがいいですか?注意点は?

A. 常時HTTPSを徹底するなら付けたほうが安全です。ただしincludeSubDomainsを付けると全サブドメインがHTTPS必須になり、HTTPでしか動かないサブドメインがあると到達できなくなります。preloadは解除に時間がかかるため、すべてのサブドメインのHTTPS化が完了してから最後に付けます。max-ageは短めから始めて、問題がなければ延ばすのが安全です。

Q. HTTPS化したのに鍵マークが付かないのはなぜですか?

A. 多くは混在コンテンツ(mixed content)が原因です。ページはHTTPSでも、中で読み込む画像・CSS・JSAPIのURLがhttp://のままだと、ブラウザが安全でないと判断します。開発者ツールのコンソールに出るMixed Content警告を手がかりに、該当URLをhttps://か相対パスに直します。

Q. ACMの証明書は本当に放っておいても更新されますか?

A. DNS検証で発行した証明書は、検証用のCNAMEレコードをドメインに残しておけば自動更新されます。逆に、この検証レコードを削除すると自動更新が止まります。メール検証の場合は自動更新の扱いが弱いため、DNS検証を選ぶのが安全です。EC2に置いた自前証明書はACMの自動更新の対象外なので、別途期限監視が必要です。

参考リンク

あとで見返すならここで保存

読み終わったあとに残しておきたい記事は、お気に入りからまとめて辿れます。