【AWS】ALBとEC2間をHTTPS化する① ~まずはクライアント⇔ALB間をHTTPS化してみた~

ALBアイキャッチ

はじめに

今回は、AWS環境に構築した以下の構成をHTTPS化していきます。

クライアント ⇄ ALB ⇄ EC2

最終的には、クライアントから終端のEC2までHTTPS通信にすることを目指します。

ただし、いきなり全区間をHTTPS化するのではなく、まずはファーストステップとして、以下の区間をHTTPS化します。

クライアント ⇄ ALB

今回は、自己署名証明書を作成し、AWS Certificate Manager(ACM)へインポートします。

現状

今回の環境は以下の状態です。

  • ALB:作成済み
  • EC2(Amazon Linux):作成済み
  • EC2へApacheをインストール済み
  • HTTP通信による接続確認済み

現在は、以下の構成で通信できています。

クライアント
    ↓ HTTP
   ALB
    ↓ HTTP
   EC2

ALBのDNS名でアクセスし、HTTP通信による接続を確認済みです。

参考

今回の証明書作成方法は、以下の記事を参考にしました。

Qiita:ALBでHTTPS通信を行う

SSL証明書を作成する

まずは、自己署名証明書を作成します。

1. 秘密鍵を作成

以下のコマンドを実行します。

openssl genrsa -out private.key

private.keyという秘密鍵ファイルが作成されます。

2. CSRファイルを作成

次に、CSR(Certificate Signing Request)を作成します。

openssl req -new -key private.key -out server.csr

コマンド実行後、証明書情報の入力を求められます。

ここで、Common NameにはALBのDNS名を設定します。

今回の例では、ALBのDNS名を設定しました。

3. 自己署名証明書を作成

以下のコマンドを実行します。

openssl x509 -req -days 365 -in server.csr -signkey private.key -out server.crt

これで、自己署名証明書であるserver.crtが作成されます。

今回作成したファイル

は以下の3つです。

ファイル用途
private.key秘密鍵
server.csrCSR
server.crtSSL証明書

ACMへ証明書をインポートする

次に、作成した証明書をACMへ登録します。

ACMダッシュボードに移動し、左部メニューの「証明書をインポート」をクリック

証明書本文:server.crtの内容を貼り付け
証明書のプライベートキー:private.keyの内容を貼り付ける

証明書の登録確認

「証明書をインポート」下記のようにステータスが「発行済み」になることを確認

ALBのリスナー設定を変更する

EC2ダッシュボードに移動し、左部メニューよりロードバランサーを選択

該当のALBにチェックを入れた状態で
「リスナーとルール」タブを選択し「リスナーの追加」をクリック

リスナーの追加セクションに移動するのでHTTPSを選択し、既存のターゲットグループを選択
した画面にスクロールし「リスナーの追加」をクリック

セキュアリスナーの設定で先ほど設定した証明書を選択し「リスナーの追加」をクリック

正常に作成されることを確認

接続テスト

それでは、実際にHTTPS通信を確認します。

ブラウザから以下のURLへアクセスします。

https://ALBのDNS名

すると、証明書に関する警告画面が表示されます。

今回は自己署名証明書を使用しているため、ブラウザから信頼されていません。

画面上の**「詳細を表示」**をクリックします。

「このwebサイトを閲覧」をクリック

ALB HTTP TEST と表示されていますが、HTTPSで無事接続できました。

まとめ

今回は、以下の構成でHTTPS化を実装しました。

クライアント ⇄ HTTPS ⇄ ALB ⇄ HTTP ⇄ EC2

自己署名証明書を作成し、ACMへインポート。

その後、ALBにHTTPSリスナーを追加することで、クライアント⇔ALB間のHTTPS化を実現しました。

今回の構成では、ALB⇔EC2間はまだHTTP通信です。

次回は、ALB⇔EC2間にも証明書を設定し、クライアントから終端のEC2までHTTPS化していきます!

お疲れ様でした!