【AWS】ALBとEC2間をHTTPS化する① ~まずはクライアント⇔ALB間をHTTPS化してみた~
記事の目次
はじめに
今回は、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通信による接続を確認済みです。
参考
今回の証明書作成方法は、以下の記事を参考にしました。
SSL証明書を作成する
まずは、自己署名証明書を作成します。
1. 秘密鍵を作成
以下のコマンドを実行します。
openssl genrsa -out private.keyprivate.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.csr | CSR |
server.crt | SSL証明書 |
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化していきます!
お疲れ様でした!
- タグ:
- ALB