ロードバランサ(LB )で負荷分散をして、SSLクライアント認証を行う例です。一般的なSSLオフロード構成ではロードバランサーでSSLセッションが終端します。今回はロードバランサーでSSLを終端させずに、ロードバランス先のWebサーバーまでSSL通信を行い、常時SSL化でのSSLクライアント認証を行う構成例です。SSLクライアント認証もWebサーバー側で行います。
ロードバランサーでSSLをオフロードしないため、クライアントからWebサーバーまでを常時SSL化及びSSLクライアント認証での運用が出来ます。SSLでのアクセス認証のログはWebサーバー側で取得出来ます。Amazon AWSやクラウド、VMwareやHyper-Vなどの仮想環境での運用に対応。冗長構成や拠点間のマルチAZでの運用構成も出来ます。
構築方針
- ロードバランサーで、SSLをターミネートしない(LBではTCP 443からTCP 443への転送)
- クライアントからWebサーバーまでの全経路で常時SSL通信(https)を行う
- SSLサーバー証明書は、自己署名もしくはパブリックな証明書に対応
- WebサーバーへCRL(失効リスト)を配布する
- SSLクライアント認証は、Webサーバー側で行う
- SSLクライアント認証のログは、Webサーバー側で取得する
使用した機器
- KEMP LoadMaster (ロードバランサー管理IP) IP=192.168.100.62
- KEMP LoadMaster (Virtual IP) IP=192.168.100.63
- Powered BLUE Private CA (プライベートCA ) IP=192.168.100.54
- Powered BLUE 870 ( Web / CRL) IP=192.168.100.58 & 73
- 今回は各サーバーとも仮想アプライアンス(VMware版)を利用
- 各サーバともGUIから、LB/CA/CRLの同期設定/SSLクライアント認証が簡単に出来ます
- Webサーバーのデータを自動同期させます
備考 Amazon AWS上でロードバランサー / CA / SSLクライアント認証を運用の場合
AWSへ登録の Powered BLUE / AMI を利用できます
- KEMP ロードバランサはVirtual LoadMaster for AWS を選択
CA/CRLはAWSへ登録のAMIを選択 ( Powered BLUE Private CA )
Web/CRLはAWSへ登録のAMIを選択 ( Powered BLUE B870 )
ロードバランサーの設定 ( KEMP ロードマスター )
- ロードバランサーの管理 IP = 192.168.100.62
- ロードバランサーの Virtual IP Address = 192.168.100.63 / load-balancer.mubit.com
- 負荷分散先のWeb / CRL サーバー No1 = 192.168.100.58
- 負荷分散先のWeb / CRL サーバー No2 = 192.168.100.73
ロードバランサー設定のポイント
- SSL Acceleration をオフ (SSL通信をロードバランサでオフロードしない)
- DNSサーバーにロードバランサー「192.168.100.63 / load-balancer.mubit.com 」 を登録
- 外部からのアクセスは https://load-balancer.mubit.com となります
プライベートCA設定のポイント
CAからCRLの提供を許可するクライアントのWebサーバーを指定します ( 許可するIPアドレス )
- 負荷分散先のWeb / CRL サーバー No1 = 192.168.100.58
- 負荷分散先のWeb / CRL サーバー No2 = 192.168.100.73
Webサーバー側の設定のポイント ( 192.168.100.58 / 192.168.100.73 )
CRLの同期
- CAからCRLを自動入手出来る設定をします ( 取得先CA http://ca-server.mubit.com )
証明書の登録
- 負荷分散する2台のWebサーバーに、同一のSSLサーバー証明書&秘密鍵を登録します
SSLのサーバー証明書を作成します(1台目のWebサーバー)
- 「自己署名デジタル証明書の作成」 または 「署名リクエストの作成」 で作成します
自己署名デジタル証明書の作成の場合(プライベートSSLサーバー証明書の場合)
- 「自己署名デジタル証明書の作成」から必要事項を記入して、SSLを有効にします
署名リクエスト ( CSR ) の作成の場合(パブリックSSLサーバー証明書の場合)
公的なSSLサーバー証明書を利用の場合には、ブラウザへの警告メッセージ
「このWebサイトで提示されたセキュリティ証明書は、信頼された証明機関から発行されたものではありません」
を抑制することが出来ます
SSLのサーバー証明書は
- ドメイン認証証明書(DV:Domain Validation)
- 組織認証証明書(OV:Organization Validation)
- EV証明書(EV:Extended Validation)
が登録出来ます
- 必要事項を記入して、 「署名リクエストの作成」 ボタンを押します
- 作成された 「署名リクエスト」 ファイルを保存
- この 「署名リクエスト」 ファイル signig-request.txt を、公的なSSLサーバー証明書の発行機関へ送付
- 公的機関で発行された、サーバー証明書を 「インポート」 します
- 中間証明書のインポートにも対応しています
サーバー証明書&秘密鍵のエクスポート(1台目のWebサーバー)
- 1台目のWebサーバーに登録されている、サーバー証明書&秘密鍵を「エクスポート」
サーバー証明書&秘密鍵のインポート(2台目以降のWebサーバー)
- 1台目のWebサーバーから取り出した証明書&秘密鍵を2台目のWebサーバーへインポート
- 1台目のサーバー証明書と秘密鍵のコピーが2台目にインストールされます
Let’s encrypt のSSLサーバー証明書を利用することも出来ます
WebページのSSLクライアント認証を設定
- 1台目、2台目ともWebアクセス時の 「SSLクライアント認証」 を有効にします
SSLクライアント認証時のアクセスコントロール
有効なSSLクライアント証明書を有している場合でも、Webサイト毎に各種のアクセスコントロールが設定出来ます
失効リスト(CRL)に関わらず、ただちにWebへのアクセス禁止を設定できます
SSLクライアント証明書を失効させることなく、Webへのアクセスを禁止できます
- 組織や部門でのアクセス制限
- 曜日や時間帯でのアクセス制限
- 特定ユーザーでのアクセス制限
- 端末を紛失したので、ただちにAさんのSSLクライアント証明書でのアクセスを禁止
SSLクライアント認証のログ
SSLクライアント認証時のアクセスログの出力先を指定出来ます。Webサーバー側でアクセスログを取得出来ます。
その他
- Webサーバーに適宜データを入れます(ホームページデータなど)
- Powered BLUE Private CAでSSLクライアント証明書を作成して、配布します
マルチAZ構成
複数拠点に設置のWebサーバーに対して冗長構成での運用構成です
- WebサーバーA 東日本設置
- WebサーバーB 西日本設置
マルチAZに対応のGSLB機能を持つロードバランサー(例 KEMP ロードマスター)などを利用して冗長構成で運用します。2台のWebサーバー間でWebデータを自動同期します。
デモサーバー
Powered BLUEの デモサーバー
終わりに
SSLクライアント認証でWebサイトの認証を強化したい方、既存で運用のWebサイトへのアクセスに認証機能を導入したい方。デモ環境で試してみたい方や詳しい話を聞いてみたい方などは、ムービットの お問い合わせフォーム からご連絡ください。