この記事の目次
WebサイトのHTTPS化とは

HTTPSとは
HTTPは「Hyper Text Transfer Protocol」の略です。 HTTPSはそれに「Secure」が追加されセキュリティを高めたプロトコルです。 どちらもウェブページを表示するためのプロトコルですが、HTTPSはページが暗号化されており、改ざんや第三者から通信内容を覗き見されないような仕組になっています。なぜHTTPS化するのか

サイト全体をHTTPS化する理由
インターネットの利用が一般化し便利になった一方、ページの改ざんや入力内容の盗聴といった被害も増加しています。スマートフォンの普及もサイバー犯罪増加に拍車をかけています。 ユーザーを守るためにすべてのページを暗号化する事が好ましいというのが最近の主流の考え方です。常時HTTPS化したほうがいい理由は他にもある
HTTPS化はシステム側の都合だけではなくビジネスに直結する課題なのです。 Googleは検索結果に表示される順位を決める際、常時SSL化されているかどうかもスコアとして判定します。そのため、SEOにも大きな影響を与えます。 有力ブラウザのGoogle Chromeでは、2018年頃からHTTPSに対応していないサイトを訪れた場合には警告が表示されるようになりました。 ECサイトであれば、サイトを訪れたユーザーの購買意欲にも大きな影響を与えるであろうことは容易に想像できます。AWS上に構築されたサイトのHTTPS化手順

前提条件
シンプルに考えるため、以下のような構成のサイトを想定しています。 ・EC2インスタンス上でAmazonLinuxが稼働しているサーバー ・Apacheが動作している ・静的HTMLのページにhttp://www.hogehoge.jp/のURLでアクセスできるAWS ACMでSSL証明書の発行
HTTPS化にあたり、SSL証明書を発行する必要があります。 一般的なSSL証明書は業者からの購入となり、有料の上に発行まで手間のかかるものが多いのですが、AWSのACMを利用すれば無料で発行できます。 AWS ManagimentConsoleからメニューの「セキュリティ、ID、およびコンプライアンス」内にある「Certificate Manager」を開きます。 「証明書のリクエスト」をクリックし「パブリック証明書のリクエスト」を選択して先に進みます。 ドメイン名はここでは一例として「www.hogehoge.jp」を入力しました。 ちなみに、ワイルドカードを使用して「 *.hogehoge.jp」という入力も可能です。 複数のサーバーを運用する予定があるならこちらのほうが便利です。 「DNSの検証」または「Eメールの検証」どちらかを選択します。 これは証明書を発行しようとしているドメインの正当な所有者であることを確認するための方法です。 DNS検証を選択した場合は指定されたレコードをDNSに追加する作業が必要になります。 DNSサービスにAWS Route53を使用している場合はこちらがおすすめです。 Eメール認証はAWSから送信されてきた認証メール内のリンクをクリックする方式です。 この場合メールが届くのはAWSへのログインに使っているメールアドレスではなく、ドメイン管理者として登録されているメールアドレスという点に注意してください。 これらの検証が正常に完了すると、CertificateManagerの一覧に「発行済み」が表示されます。ロードバランサー(ALB)を作成する
EC2サーバーにかわってHTTPSアクセスを代行するロードバランサーを作成します。 EC2ダッシュボードに移動しメニューから「ロードバランサー」→「ロードバランサーの作成」に進みます。 ロードバランサーの種類は「Application Load Balancer」 ロードバランサー名は例として「hogehoge-alb」 スキームは「インターネット向け」 IPアドレスタイプは「IPV4」を選択しましょう。 ロードバランサープロトコルは「HTTPS(セキュアHTTP)」を選択し、VPCは接続したいEC2が所属するものを選択します。 証明書タイプで「ACMから証明書を選択する(推奨)」を選び、「証明書の名前」の欄は先程作成した証明書を選択してください。 セキュリティポリシーには初期値としてその時点での最新の物が選択されています。そのままでよいでしょう。 セキュリティグループは「新しいセキュリティグループを作成」を選択します。 「タイプ」に「HTTPS」 「ソース」は「0.0.0.0/0」とし、HTTPS接続はすべて受け入れる設定とします。 ターゲットの登録ではALBと接続する対象のEC2インスタンスを選択すればロードバランサーが作成されます。EC2インスタンスのセキュリティグループの修正
ALBからEC2インスタンスへの接続可能となるようにセキュリティグループを修正します。 EC2インスタンスのセキュリティグループにインバウンドルールを追加します。 ソースにロードバランサーのセキュリティグループを指定、プロトコルはHTTPを選択しアクセスを許可します。 AWSの初期値ではロードバランサーからEC2への接続はHTTPとなる事に注意してください。ロードバランサー作成後、EC2インスタンスと接続するまで少し時間がかかります。HTTPSアクセスの動作確認
計画通りにHTTPS化されたサイトにアクセスできるか試してみましょう。 今の時点ではまだ本番の環境に手を加えたくないので、まずはパソコンのhostsファイルを書き換えてテストする方法を取ります。 nslookupコマンドでALBのDNS名が指すIPアドレスを取得します。 パソコンのhostsファイルを編集します。 www.hogehoge.jpに先ほど取得したIPアドレスを記述します。 (このあと設定反映のためにパソコンの再起動が必要になるケースもあります) ブラウザを開きhttps://www.hogehoge.jp/にアクセスします。 HTTPS化されたサイトにアクセスできればサイトのHTTPS化は成功です。本番DNSの修正
最後の仕上げとして、本番のDNS設定を修正します。 www.hogehoge.jpのCNAMEをロードバランサーのDNS名へ変更してください。 AWSのロードバランサーIPアドレスは不定期に変更されますので、IPアドレスではなくDNS名で登録するように注意してください。 先程パソコンに設定したhostsファイルの変更は破棄しましょう。ブラウザを開き、問題なくアクセスできれば作業は完了です。 今後は外部からのアクセスはすべてALBを経由する形になります。EC2のセキュリティグループを修正し、ALB以外からのアクセスを不可にすればサーバーのセキュリティも向上します。その他の作業
サーバーの設定完了後は、サイトのコンテンツに関する修正も行いましょう。 内部リンクが含まれているページがあれば、httpsで始まるURLに修正しましょう。httpで始まる以前のURLにアクセスがあった際、HTTPS化後の新しいURLへ301リダイレクトする設定も行ないましょう。 可能であれば、検索エンジンや外部にあるリンクなども修正しておきたい項目です。まとめ
