OCI ロードバランサに無償のSSL証明書を追加しHTTPS通信ができたので、続いてWAFにもSSL証明書を追加して、ブラウザからオリジンとなるロードバランサまでの経路全体でのHTTPS通信の暗号化ができるか試してみます。
[OCI] ロードバランサにSSL証明書を設定しHTTPS通信を試してみた
お試し環境
構成は以下のイメージです。ロードバランサは既に構成済みなので今回はWAFの設定をメインにおこないます。
前提
-
OCI WAFの動作のしくみ、基本の設定方法についてはこちらをご参考ください。
-
オリジンは構成済みのロードバランサとしています。
- ロードバランサには既にSSL証明書を追加しており、動作確認済みです。
- [OCI] ロードバランサにSSL証明書を設定しHTTPS通信を試してみた
- WAFからはドメイン名ではなく、IPアドレスを指定して接続します。
- ドメイン名(例) lb.cocotaro.com)はWAF呼出しに使うため、登録済みのDNS Aレコードからはいったん削除します。
WAF の設定
1. WAFポリシー作成
はじめにWAFポリシーを作成し、WAFのエンドポイント(CNAMEレコード)を取得します。左上のナビゲーションメニューから[セキュリティ] - [Webアプリケーション・ファイアウォール] からWAFポリシーの作成をおこないます。
[名前] 任意の名前を入力
ドメイン
[プライマリ・ドメイン] ブラウザから呼び出すドメインを指定 (例) lb.cocotaro.com)
WAFオリジン
[URI] オリジン(ロードバランサ)のグローバルIPアドレスを指定(例) 168.138.XXX.XXX)
WAFポリシーの作成 をクリックすると、WAFのCNAME(WAF呼出しのエンドポイント)が表示されるのでコピーしておきます。
2. WAFエンドポイントの登録
続いて、ナビゲーションメニューから[ネットワーキング] - [DNS管理] - [ゾーン]を遷移し、既存のDNSゾーンを選択。左のリソースからレコードをクリックしレコードの追加をおこないます。
[レコード型] CNAME を選択
[名前] ブラウザからの呼出しのドメイン(例) lb.cocotaro.com)を指定
[TARGET(ターゲット)] WAFポリシー作成時のCNAME(WAFのエンドポイント)を指定
しばらくして、nslookup を実行しCNAMEレコードが機能しているかを確認できました。これによりブラウザからのリクエストはWAFエンドポイントに転送されます。
3. Webアプリの動作確認
ブラウザからリクエストして、WAF → ロードバランサ → Webアプリ までが動作しているかを確認します。
Webアプリからは正常にサーバー名が返されましたが、この時点では通常のHTTP通信のため、ブラウザとWAFの間は暗号化はされていません。ブラウザにはセキュアな接続でない旨の表示がされています。
4. WAFにSSL証明書を追加
続いて、WAFにSSL証明書を追加して、ブラウザとWAFの間の暗号化を図ります。再び、ナビゲーションメニューから[セキュリティ] - [Webアプリケーション・ファイアウォール] をクリック、構成済みのWAFポリシーを選択。
左のWAFポリシーから設定 をクリックし、設定画面が表示されたら編集 をクリックするとHTTPSサポートの編集画面が表示されます。
HTTPSサポート設定でSSL証明書を追加して、HTTPSを有効化します。
[HTTPSサポートの有効化] チェックして有効化
証明書と秘密キーのアップロードまたは貼り付け を選択し、
証明書ファイル (cert.pem)と秘密キー(privkey.pem) をそれぞれアップロードします。
変更の保存 でHTTPSサポート有効が保存されました。
続いて、変更の公開をおこないます。
グローバルで約20拠点程に配備されている OCI WAFの拠点(Edge PoP(Points of Presence))に変更が反映されるまでに約30分前後要します。コーヒーブレークして変更が反映されるのを気長に待ちましょう。
動作確認
SSL証明書を追加して変更の公開が完了したので、HTTPS通信が有効になっているかを確認します。
ブラウザからでリクエスト(例)https://lb.cocotaro.com) すると、鍵マークが表示されるようになりました。ブラウザは Google Chrome を使用。鍵マークをクリックするとSSL証明書が有効化されており、HTTPS通信が機能し暗号化によりセキュアな通信が行われることが確認できました。