BIG-IPと暗号化通信の仕組みについて~SSL通信概要編~
こんにちは。クレスコ・デジタルテクノロジーズのWKです。
前回の記事では、BIG-IPの冗長構成や系切替方式についてご紹介しました。
本記事では、Client SSL Profileを使用して、クライアントとBIG-IP間の通信を暗号化する
SSL通信を行う方法についてご紹介していきたいと思います。
■前回の記事はこちら↓
前回ブログ記事:「BIG-IPの冗長化とは?設定例や系切替方式をわかりやすく解説」
■あわせて読まれている資料:
対応事例やネットワークサービス一覧を掲載!
→ネットワークテクノロジーサービス
目次[非表示]
- 1.BIG-IPとSSL通信について
- 1.1.■SSL/TLSとは
- 1.2. ■SSL通信の役割
- 1.3.■BIG-IPで暗号化通信を実現するためには
- 2.証明書とSSL通信の流れについて
- 2.1.■認証局と証明書・鍵について
- 2.2.■SSL通信の流れ
- 3.まとめ
- 4.参考文献
BIG-IPとSSL通信について
■SSL/TLSとは
SSL/TLSとは、インターネット上で通信を暗号化するプロトコルです。ショッピングサイトでのパスワード・ID等のログイン情報や、クレジットカード番号など、重要性の高い情報が盗み取られるのを防ぎ、安全に通信が行えるようにします。
「SSL」とは古い規格の名称であり、SSLをより安全な暗号化通信の規格としてバージョンアップさせたものが「TLS」となります。名称としてはSSLが定着しているため、「SSL/TLS」と表記されることも多いです。本記事では「SSL」と記載しています。
■SSL通信の役割
SSL通信には以下のような役割があります。
①通信の暗号化
インターネットを使用する際に、悪意のある第三者が通信の中身を盗み見る「盗聴」を防ぐため、
通信を暗号化し、データを守ります。
※ちなみに、暗号化したデータを元の暗号化する前の状態に戻すことを「復号」といいます。
②データの改ざんを防ぐ
データの改ざんとは、悪意のある第三者が盗み見たデータを不正に書き換えることです。
SSL通信では、データが改ざんされていないかを確認します。
③Webサイトの認証
利用しているWebサイトが本物かどうか、Webサイトのサーバ証明書を確認することで、
本物のサイトになりすまして偽のサイトに誘導し、情報を盗む「なりすまし」を防止します。
普段インターネットを使用している時、URLが「https://~」となっており、アドレスバーに錠前マークが表示されているのを見たことはありますか?
これは通信がSSLで暗号化されており、データが守られている、安全であることを表しています。
■BIG-IPで暗号化通信を実現するためには
BIG-IPに設定したVirtualServerに対し、「SSL Profile」を適用することで、暗号化通信が可能になります。
ここで、Profileの機能についてもう少し詳しくご紹介します。
●Profileとは
BIG-IPに設定したVirtualServerが、クライアントから来た通信をどのように処理をするかを定義
します。
デフォルトのProfileをそのまま使用することも可能ですが、カスタムしたProfileを使用する場合
は、デフォルトのProfileを親Profileとした、Custom Profileを作成します。
1つのVirtualServerに複数のProfileを適用することも可能です。
※VirtualServerの「Type」によって適用できるProfileは異なります。
例)①「HTTP Profile」
クライアントから来た通信をHTTPとして認識させ、HTTP特有の処理をさせる
②「Persistence Profile」
アプリケーションで、同じクライアントからの複数のコネクションを同じサーバで処理させ
る場合、BIG-IPが同じサーバへ振り分けができるようにする
※BIG-IPの負荷分散の仕組みでご紹介したcookieパーシステンス、ソースアドレスパーシス
テンスはPersistence ProfileをVirtualServerに適用することで動作します。
「ロードバランサーBIG-IPとは?負荷分散の仕組みについても解説 」の内容もご参照くださ
い。
クライアントとBIG-IP間で暗号化通信、つまりHTTPS通信を行うためには「Client SSL Profile」を使用します。
●「Client SSL Profile」
Client SSL Profileを使用することで、BIG-IPはクライアントから送信されるSSL(HTTPS)を終端し、
サーバに対しては復号されたHTTPを送信することができます。
BIG-IPにはSSL処理専用のハードウェアチップが搭載されており、高速にSSL処理を行うことができます。
また、サーバ側で負荷のかかるSSLの暗号化・復号処理を行う必要がなくなるため、リソースを有効に使用することが出来るようになります。
証明書とSSL通信の流れについて
各証明書とSSL通信の流れについてご説明します。
SSL通信では、認証局が発行する証明書を使って、信頼できるサーバとの暗号化通信を行えるようにします。
■認証局と証明書・鍵について
●中間認証局とは
ルート認証局の認証を受けて稼働している、下位認証局のことをいいます。中間CAとも呼ばれます。
サーバ証明書の発行をすることができる認証局です。
●ルート認証局とは
最上位認証局のことをいいます。
ルート認証局より上位の認証局はなく、ルート証明書はルート認証局が自分自身に対し、発行します。
証明書は以下の図のような連鎖で信頼性を保証しています。
①○○社の秘密鍵は、○○社の公開鍵とペアになっています。
公開鍵はその名の通り、通信相手に公開しても良い鍵で、
秘密鍵は特定の機器のみに保持し、相手に秘密にしておく鍵のことです。
秘密鍵で暗号化すると公開鍵でのみ復号でき、公開鍵で暗号化すると秘密鍵でのみ復号できま
す。
②○○社のサーバ証明書は、中間認証局の秘密鍵で署名されたものです。
中間認証局の秘密鍵で署名されることで、サーバ証明書の信頼性を担保しています。
③中間認証局の秘密鍵は、中間認証局の公開鍵とペアになっています。
④中間認証局の公開鍵を持つ中間証明書は、ルート認証局の秘密鍵で署名されたものです。
ルート認証局の秘密鍵で署名されることで、中間証明書の信頼性を担保しています。
⑤ルート認証局の秘密鍵は、ルート認証局の公開鍵とペアになっています。
⑥ルート認証局の公開鍵を持つルート証明書は、自分自身の秘密鍵で署名されたものです。
証明書の信頼性は上位認証局の署名によって証明されますが、ルート認証局は、自分自身で署名
をします。
■SSL通信の流れ
SSL通信では、いきなりメッセージを暗号化して通信するわけではなく、
暗号化する前に暗号化するための情報を決める事前準備の処理=「SSLハンドシェイク」を実施します。
クライアントとBIG-IP間のSSLハンドシェイクについてご紹介します。
① 「Client Hello」
クライアントは、BIG-IPに対して暗号化通信の要求を送信します。
クライアントからのClient Helloにて、主に以下の情報がBIG-IPへ送られます。
- 利用できるプロトコルのバージョン
- 利用できる暗号化方式、ハッシュ化方式の組み合わせリスト
- 利用できる圧縮方式のリストなど
② 「Server Hello」
BIG-IP からの Server Hello にて、主に以下の情報がクライアントへ送られます。
- 利用するプロトコルのバージョン
- 利用する暗号化方式、ハッシュ値方式の組み合わせ
- 利用する圧縮方式
- 通信の暗号化に使用する鍵の情報
③「Certificate」
BIG-IPは中間証明書、○○社のサーバ証明書をクライアントへ送ります。
この証明書により、サーバが第三者機関から認められた正しいサーバであることを証明します。
④「ServerHelloDone」
BIG-IPから情報送信が終了したことを通知します。
クライアントは受け取ったサーバ証明書、中間証明書の検証を行い、
証明書が改ざんされていないものか、信頼できるかものかをチェックします。
中間認証局がサーバ証明書に添付した署名を、中間認証局の公開鍵を使って復号します。
復号したものと、送られてきたサーバ証明書をハッシュ化したものが一致する場合は、
サーバ証明書が改ざんされていないものとして、中間証明書により証明されます。
同様の手順で、中間証明書に添付した署名をルート証明書の公開鍵を使って復号し、
中間証明書をハッシュ化したものと一致した場合は、ルート証明書によって中間証明書が
信頼されます。
※ルート証明書はOSやブラウザに最初から組み込まれていて、受け取ったサーバ証明書が
正しいものかを確認することができます。
⑤「ClientKeyExchange」
クライアントは、共通鍵などを生成するために必要な「プリマスターシークレット」値という
共通鍵の素を生成します。
「プリマスターシークレット」値は共通鍵の元になるランダムな値のことです。
この値を○○社の公開鍵で暗号化し、BIG-IPへ送ります。
BIG-IPは、その暗号化された「プリマスターシークレット」を○○社の秘密鍵で復号します。
⑥「Change Cipher Spec」
クライアントが暗号化通信に必要な準備が完了したことを示すメッセージを送ります。
BIG-IPも同様にクライアントに対し、Change Cipher Specを送ります。
⑦「Application Data」
以降は共通鍵での暗号化、復号のやり取りを行い、データ本文を暗号化した通信が開始されます。
まとめ
いかがでしたでしょうか。
普段何気なく利用しているインターネットではこうしたSSL通信技術が使われており、BIG-IPはSSL処理をサーバの代わりに行うことで、サーバ側の負荷を軽減させることができます。
次回は、実際の設定画面をご紹介しながら、BIG-IPのSSL通信設定とその動作についての解説をしていきたいと思います。
最後までお読みいただき、ありがとうございました。
参考文献
みやたひろし. パケットキャプチャの教科書. SBクリエイティブ株式会社, 2017, p.296-332
みやたひろし. サーバ負荷分散入門. SBクリエイティブ株式会社, 2012, p.138-157