富士通が運用するOpenStackのクラウド基盤「Fujitsu Cloud Service for OSS」略称 4OSS (旧名称 K5)で、ロードバランサ配下のWebサーバーを冗長構成で運用&SSLクライアント認証を行う場合の例です。一般的なOpenStackでも、同様の構成で運用が出来ます。
OpenStackのロードバランサー / LBaaS v2 ではSSLのサービスを通過させるだけでSSLクライアント認証はWebサーバー側で行います。ロードバランサーにはSSLサーバー証明書を登録する必要はありません。WebサイトまでSSL通信を行うので、途中経路での情報漏洩を防止する事が可能です。SSLクライアント認証時のアクセスログも取得します。
Client — ( 443 ) — ロードバランサ — ( 443 ) — Web Server (SSLクライアント認証)
この設定で運用するゾーンは 4OSSのjp-east-3 / jp-west-3 に対応しています( OpenStack / Ocata )。それ以外のゾーンは、OpenStackやロードバランサーのバージョンが異なるためネットワークやルーター、ロードバランサーの設定方法が異なります。
構築方針
- OpenStackのロードバランサー(LBaaS v2)でSSLをターミネートしない
- ロードバランサーを利用して負荷分散&冗長構成の運用を行う
- ロードバランサーではTCP 443からTCP 443への転送
- ロードバランサーにはSSLサーバー証明書の登録は不要
- クライアントからWebサーバーまでの全経路で常時SSL通信(https)を行う
- Private CA (認証局)は、OpenStack上で運用する
- SSLクライアント端末認証は、Webサーバー側で行う
- 失効リスト(CRL)の自動取得&同期を行なう
- ロードバランサーとWebサーバー2台&Private CA は同一ネットワークへ配置
- 設定はGUIから行なう
公的な認証局 ( Public CA )が発行したSSLクライアント証明書を利用してのSSLクライアント認証を行なう運用も出来ます(例 グローバルサイン / UPKI )
使用するもの
- Fujitsu Cloud Service for OSS (4OSS)
- OpenStack のロードバランサー ( LBaaS v2 )
- Powered BLUE プライベート CA 1台 ( 認証局 / 4OSSで運用 )
- Powered BLUE Web サーバー 2台( SSLクライアント認証 & Web / 4OSSで運用)
- SSLサーバー証明書
ネットワーク構成(最終形)
- LAN 10.0.5.0 / 24
- ルーター / gw IP=10.0.5.1
- ロードバランサー IP=10.0.5.2 / IP=133.162.67.28 / LM-master-web.mubit.com
- B870-CA IP=10.0.5.20 / IP=133.162.67.42 / B870-CA.mubit.com
- Web1 / B870-LBM1 IP=10.0.5.22 / IP=133.162.67.25 / B870-LBC1.mubit.com
- Web2 / B870-LBM2 IP=10.0.5.27 / IP=133.162.67.30 / B870-LBC2.mubit.com
- 運用するゾーン east-3 or west-3
設定&構築
今回は4OSSのGUIからの操作で構築します。尚OpenStack 標準のGUI / Horizonからの操作やAPI , Ansibleでの構築も可能です。
Networkの設定
OpenStack / 4OSSのネットワークなどの基本設定を行ないます。
- 4OSS/OpenStack上にNetworkなどを初期設定します
Webサーバーの設定
Webサーバーとしては、Powered BLUE Web サーバーを利用します
4OSS/OpenStack上に2台のPowered BLUE Web サーバーをセットアップします。
- B870-LBM1 / B870-LBC1.mubit.com / IP=10.0.5.22 / IP=133.162.67.25
- B870-LBM2 / B870-LBC2.mubit.com / IP=10.0.5.27 / IP=133.162.67.30
Private CAの設定
Private CAとしては、Powered BLUE Private CAを利用します
4OSS/OpenStack上にPowered BLUE Private CA サーバーをセットアップします。
- B870-CA / B870-CA.mubit.com / IP=10.0.5.20 / IP=133.162.67.42
サーバーへのグローバルIPのアサイン
1台目 Web Server へのIPのアサイン
- B870-LBM1 / B870-LBC1.mubit.com / IP=10.0.5.22 / IP=133.162.67.25
2台目 Web Server へのIPのアサイン
- B870-LBM2 / B870-LBC2.mubit.com / IP=10.0.5.27 / IP=133.162.67.30
Private CA へのIPのアサイン
- B870-CA / B870-CA.mubit.com / IP=10.0.5.20 / IP=133.162.67.42
Webサーバーの設定
それぞれのWebサーバーへホームページのデータを入れます。Powered BLUE サーバーは、ベースOSとして CentOS 7.x / RedHat 7.x (64bit) で動作します。CentOS / RedHat 対応のアプリケーションをインストール&運用することも出来ます。WordPress や Let’s Encrypt などは、フリープラグインにより簡単にPowered BLUE サーバーへインストール&利用が出来ます。
B870-LBC1 ( Web サーバーNo1 )
B870-LBC2( Web サーバーNo2 )
ポイント
- 2台のWebサーバーに、同一のSSLサーバー証明書を入れます
- SSLサーバー証明書は、自己証明書やLet’s Encrypt、パブリックなサーバー証明書を登録出来ます
自己証明書の場合
同一のSSLのサーバー証明書を作成します(1台目のhttpsサーバー)
- 「自己署名デジタル証明書の作成」 または 「署名リクエストの作成」 で作成します
自己署名デジタル証明書の作成の場合
- 「自己署名デジタル証明書の作成」から必要事項を記入して、SSLを有効にします
パブリックなSSLサーバー証明書を利用の場合
- 署名リクエスト(CSR)で作成の場合
- 必要事項を記入して、「署名リクエストの作成」 ボタンを押します
- 作成された 「署名リクエスト」 ファイルを保存
- この「署名リクエスト」ファイル signig-request.txt を、公的なSSLサーバー証明書の発行機関へ送付
公的機関で発行された、SSLサーバー証明書を「インポート」します
サーバー証明書&秘密鍵のエクスポート(1台目のhttpsサーバー)
- 1台目のWebサーバーに登録されている、「サーバー証明書&秘密鍵」が含まれているssl-certificate.txtを「エクスポート」
サーバー証明書&秘密鍵のインポート(2台目以降のhttpsサーバー)
- 1台目のWebサーバーから取り出した「証明書&秘密鍵」が含まれている「ssl-certificate.txt」を2台目以降のWebサーバーへインポート
- 1台目のサーバー証明書と秘密鍵のコピーが2台目にインストールされます
Let’s Encryptの場合
Let’s Encryptは、無償で利用できる公的なSSLサーバー証明書です。Powered BLUE 870 へはフリープラグインを利用して、1台目のWebサーバーへSSLサーバー証明書をインストールします。
2台目のWebサーバーへのSSLサーバー証明書のインストールは、上記の「パブリックなSSLサーバー証明書を利用の場合」と同様の操作方法で、1台目から「SSLサーバー証明書と秘密鍵」をエクスポート&2台目へ「SSLサーバー証明書と秘密鍵」をインストールします。
SSLクライアント認証を設定
- 1台目、2台目ともWebアクセス時の 「SSLクライアント認証」 を有効にします
CAからCRL自動入手&更新の設定
- CAからCRL(失効リスト)を自動入手出来る設定をします
- 取得先CA ホスト名 ( 例 B870-CA.mubit.com )
- 同期結果 「成功」 の場合には、CAからCRLが正常に入手できています
- 2台のWebサーバーとも同様の設定を行ないます
アクセスコントロール
有効なSSLクライアント証明書を有している場合でも、Webサイト毎に各種のアクセスコントロールが設定出来ます
失効リスト(CRL)に関わらず、ただちにWebへのアクセス禁止を設定できます
SSLクライアント証明書を失効させることなく、Webへのアクセスを禁止できます
・組織や部門でのアクセス制限
・曜日や時間帯でのアクセス制限
・特定ユーザーでのアクセス制限
・端末を紛失したので、ただちにAさんのSSLクライアント証明書でのアクセスを禁止
ログの出力先などの指定
SSLクライアント認証時のアクセスログの出力先を指定出来ます
Private CAの構築
4OSS上にPowered BLUE プライベートCAをセットアップします
SSLクライアント証明書の発行
プライベートCAでSSLクライアント証明書を発行。クライアント証明書は、会社や部門全体での一括発行や、1ユーザーごとの個別の発行が出来ます
SSLクライアント証明書を個別発行の場合(マニュアルで1枚発行の場合)
例 suzuki@mubit.com ユーザーのクライアント証明書を作成
有効期限などを指定して発行します
有効期間やポリシーを設定して、部門や全社員の一括発行も出来ます
SSLクライアント証明書をダウンロードします
ダウンロードURLを通知して、ユーザーが個別にダウンロードすることも出来ます
SSLクライアント証明書のブラウザへのインストール(Firefoxの場合)
「証明書を表示」をクリック
「あなたの証明書」のインポートをクリック
SSLクライアント証明のパスワード入れてインストールします
正常にインポート時の表示
証明書マネージャーにインストールしたクライアント証明書が表示されます
ロードバランサー ( LBaas v2) の作成
- ロードバランサ名の設定 (例 LB-master-1 IP=10.0.5.2 )
- ロードバランサのプロトコル選択(例 プロトコル TCP / ポート443 )
- 分散するサーバーの設定
負荷分散設定
分散プロトコルの設定
- リスナー名 例 lb-https
- プロトコル HTTPS-HTTPS
- フロントエンドポート 443 (ロードバランサーの受信側ポート)
- 最大接続数 例 2000
負荷分散設定
- プール名 例 https-pool
- 分散アルゴリズム 例 ラウンドロビン
- セッション維持ポリシー 例 SOURCE_IP (httpsの場合には、この選択のみ可能)
- バックエンドプロトコル 例 HTTPS
- バックエンドポート 例 443
分散先のターゲットWebサーバーの指定
- 1台目 Webサーバー B870-LBM1 / 仮想Webサイト名 B870-LBC1 ( IP=10.0.5.22 )
- 2台目 Webサーバー B870-LBM2 / 仮想Webサイト名 B870-LBC2 ( IP=10.0.5.27 )
ヘルスモニタの設定
- チェック方式 例 HTTPS
ヘルスモニターのチェック方式には、 「TCP」または「HTTPS」を指定する必要があります。
ロードバランサーへグローバルIPアドレスの設定
- ロードバランサー IP=10.0.5.2 / IP=133.162.67.28 / LM-master-web.mubit.com
ロードバランサー NUAGE:VIP IP=10.0.5.2 へグローバル IP=133.162.67.28 をアサインします
グーローバルIPのアサイン状況
- ロードバランサー IP=10.0.5.2 / IP=133.162.67.28 / LM-master-web.mubit.com
- B870-LBM1 / IP=10.0.5.22 / IP=133.162.67.25 / B870-LBC1.mubit.com
- B870-LBM2 / IP=10.0.5.27 / IP=133.162.67.30 / B870-LBC2.mubit.com
- B870-CA / IP=10.0.5.20 / IP=133.162.67.30 / B870-CA.mubit.com
ロードバランサーにグローバルIPをアサインしても、ロードバランサーの名称は空白のままです。
DNSへの登録
- IP=133.162.67.28 / LM-master-web.mubit.com (ロードバランサー名)
Webへのアクセスは、ロードバランサー名のAレコードで行います
Webサーバー側の設定
1台目 B870-LBC1.mubit.com の設定
ロードバランサーにアサインのサーバーのAレコード名 LM-master-web.mubit.comでアクセス出来るように 1台目の B870-LBC1.mubit.com に
- ウェブサーバーの別名 LM-master-web.mubit.com を指定
- URLのリライトを無効設定( URLが書き換わらないようにします )
2台目 B870-LBC2.mubit.com の設定
ロードバランサーにアサインのサーバーのAレコード名 LM-master-web.mubit.comでアクセス出来るように 2台目の B870-LBC2.mubit.com に
- ウェブサーバーの別名 LM-master-web.mubit.com を指定
- URLのリライトを無効設定( URLが書き換わらないようにします )
Aレコードでのアクセス
https://LM-master-web.mubit.com/
1台目 B870-LBC1 へ SSLクライアント認証が通るとWeb pageが表示されます(URLは書き換わっていません )
https://LM-master-web.mubit.com/
2台目 B870-LBC2 へ SSLクライアント認証が通るとWeb pageが表示されます(URLは書き換わっていません )
SSLクライアント認証例 (承認されない場合)
有効なSSLクライアント証明書が無いクライアントからのアクセスの場合 ( IPhone )
Google Chrome の場合
4OSS GUIからの操作
超簡単 Fujitsu Cloud Service for OSS (4OSS)を初期設定する
4OSS Ansibleからの操作
Ansibleで4OSSのNetWork構築やサーバー設定を行なう場合
4OSS リモートコンソールの利用設定
4OSS web/https(443)を負荷分散の設定