
BIG-IPと暗号化通信の仕組みについて~SSL通信設定編~
こんにちは。クレスコ・デジタルテクノロジーズのWKです。
前回の記事では通信を暗号化するSSL通信の仕組みついてご紹介しました。
本記事ではClient SSL Profileを使用した、クライアントとBIG-IP間の通信を暗号化する
設定方法と動作ついてご紹介していきたいと思います。
なお、Client SSL Profile は、TLSバージョン制御やCipher Suite の絞り込み、
クライアント証明書認証、CRL連携など、実運用環境で求められる、
より細かなセキュリティ要件にも対応しています。ぜひ最後までご覧ください!
■前回の記事はこちら↓
前回ブログ記事:BIG-IPと暗号化通信の仕組みについて~SSL通信概要編~
■あわせて読まれている資料:
対応事例やネットワークサービス一覧を掲載!
→ネットワークテクノロジーサービス
目次[非表示]
BIG-IPのSSLアクセラレーション設定について
それではClient SSL Profileを使用したSSLアクセラレーション設定をしていきましょう。
以下のような構成図でのBIG-IPを設定していきます。
証明書と秘密鍵のインポート
まず、使用するサーバ証明書と秘密鍵をBIG-IPにインポート(取り込み)していきます。
●サーバ証明書のインポート
①トップ画面からSystem > Certificate Management > Traffic Certificate Management > SSL Certificate Listの順に選択します。
②Importをクリックし、Import Typeを「Certificate」を選択します。
③証明書の名前を入力します。
④Certificate SourceからBIG-IPに取り込む証明書を選択し、Importをクリックします。中間証明書がある場合は同様の手順でインポートします。
●秘密鍵のインポート
①トップ画面からSystem > Certificate Management > Traffic Certificate Management > SSL Certificate Listの順に選択します。
②Importをクリックし、Import Typeを「Key」を選択します。
③Key Nameに名前を入力します。この名前はサーバ証明書をインポートする際に設定した「Certificate Name」と同じ名前にします。
④Key SourceからBIG-IPに取り込む秘密鍵を選択し、Importをクリックします。


設定が完了すると、以下のようにContentsが「Certificate & Key」と表記されます。

Client SSL Profileの設定
①Local Traffic設定からProfiles : SSL : Clientを選択し、Createをクリックします。
②Certificate Key Chainのチェックボックスをクリックすると、Certificate Key Chainの編集が可能になります。

③Addをクリックし、Certificateに先程Importしたサーバ証明書を、Keyに秘密鍵を、Chainに中間証明書を選択します。
④選択完了後、Addをクリックすると元の画面に戻ります。Finishedを押し、設定を完了させます。

⑤使用するCipherを指定する場合は、Configurationを「Basic」から「Advanced」に変更します。
⑥Ciphersのチェックボックスをクリックすると、Ciphersの編集が可能になります。
defaultでは「DEFAULT」が入力されており、ほとんどのSSL接続に適した暗号が含まれています。
編集が完了したら④と同様にFinishedを押すと、設定が完了します。

VirtualServerの作成、SSL Profileの適用
SSL Profile、Poolの作成が完了したら、新規VirtualServerに適用していきます。
①Local Traffic››Virtual Serversよりcreateをクリックします。
②VirtualServerの任意の名前を入力します。(例:VS_test)
③TypeはStandardを使用します。
④VirtualServerのIPアドレスとPort:443を入力します。

⑤Protocol Profile(Client)はデフォルトの「tcp」を使用します。
(新規で作成したTCP Profileを使用する場合はそちらを選択します)
⑥HTTP Profile(Client)はデフォルトの「http」を使用します。
(新規で作成したHTTP Profileを使用する場合はそちらを選択します)
⑦SSL Profile (Client)に先程作成したClient SSL Profileを選択し、AvailableからSelectedへ移動させます。

⑧Default Poolにて負荷分散先のサーバIPアドレスを設定したPoolを選択します。
⑨Finishedをクリックし、設定完了です。

BIG-IPのSSLアクセラレーション動作について
それでは設定したVirtualServerにアクセスし、SSLアクセラレーションの動作を見てみましょう。
クライアントPCのブラウザから「https://<Common Name>」または、「https://<VirtualServerのIPアドレス>」へアクセスします。
Common Name(コモンネーム)とは
SSLサーバ証明書の登録情報の一つで、その証明書が有効なサーバのドメイン名(ホスト名)やIPアドレスのことを指します。
(参照:コモンネーム(CN)とは - 意味をわかりやすく - IT用語辞典 e-Words)
Common Name は、SSL接続をする際にブラウザにアドレスとして指定されるURLと一致している必要があり、指定したURLと、接続先Webサイトに設定されている証明書のCommon Nameが一致しない場合(例:VirtualServerのIPアドレスでアクセスする)、ブラウザは警告画面を表示させます。
Subject Alternative Name(SANs)とは
「サブジェクトの別名」という意味です。Common Nameは一つのドメインしか記載できませんが、SANsには追加で複数のドメイン名を記載することができ、一つの証明書で複数のWebサイトの暗号化通信が可能になります。
(参照:SANs(サブジェクトの別名 / サブジェクト代替名)とは - 意味をわかりやすく - IT用語辞典 e-Words)
現在chrome等のブラウザは、SANsの設定がない場合はCommon Nameが設定されていても警告画面が表示されます。

Common Name(コモンネーム)、Subject Alternative Name(SANs)はBIG-IP GUI画面の
System > Certificate Management > Traffic Certificate Management > SSL Certificate Listより該当の証明書名をクリックすると確認できます。


ブラウザアクセスすると次の図のような警告画面が表示される場合があります。「NET=ERR_CERT_AUTHORITY_INVALID」というエラーは、信頼された認証局から発行されたサーバ証明書を用いずにサイトを閲覧している場合に発生します。

Client SSL Profileに設定したサーバ証明書が自己証明書(認証局のような第三者に信頼性を保証してもらうのではなく、自分自身が発行する証明書)であり、中間証明書の設定がない場合は、前回記事の「2.証明書とSSL通信の流れについて」のSSL通信の流れでご紹介したルート証明書の検証ができないため、警告画面が表示されます。
ブラウザの「詳細設定」をクリックし、アクセスを続行してください。


アドレスバーでは「https://」となっていることが確認できます。
鍵マークをクリックし、「この接続は保護されています」→「証明書は有効です」をクリックすると証明書情報を確認することができます。
Client SSL Profileに設定したサーバ証明書(下画像は自己証明書)が表示されています。

最後にパケットキャプチャでSSLハンドシェイク通信の中身を見てみましょう。
クライアント~BIG-IP間(HTTPS通信)
①Client Hello
TCP 3ウェイハンドシェイクが行われたのち、クライアントから「Client Hello」が送られています。

②Server Hello
③Server Certificate
クライアントから送られてきた暗号化方式の中から「TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256」が決定され、証明書を送っています。

④Server Hello Done
⑤Client Key Exchange
情報を全て送り終えたらServer Hell Doneをクライアントに送ります。
クライアントはBIG-IPとの間で使用する共通鍵の素となる「プリマスターシークレット」を送っています。

⑥Change Cipher Spec
「Finished」は暗号化されて送られており、「Encrypted Handshake Message」と表示されています。
最後にクラアントから送られてきた「Change Cipher Spec」と「Finished」に対し、
BIG-IPも「Change Cipher Spec」「Finished」を送り、以降は暗号化通信が開始されます。

⑦Application Data
クライアントとBIG-IP間で暗号化通信が行われています。
暗号化された通信内容を復号するには、サーバ側の秘密鍵が必要になります。
一方、サーバ側の通信はHTTP通信となっているのが確認できます。
HTTP通信の場合はパケットの詳細を見ることができます。

まとめ
いかがでしたでしょうか。
今回ご紹介したClient SSL Profile を利用することで、以下のような要件にも柔軟に対応可能です。
暗号プロトコルを TLS1.2 に限定したい
特定の Cipher をブロック、または特定の Cipher のみに限定したい
クライアント証明書認証を行いたい(BIG-IPがクライアントに証明書を提示させ、登録済みCA証明書に基づいて行う正当性検証)
CRL ファイルを使用したい
本記事が、皆さまの環境構築や設定検討の一助となれば幸いです。
最後までお読みいただき、ありがとうございました。
■サービス一覧はこちら↓






