【A10 Thunder】SSLアクセラレータの基本設定と動作確認 5.2.0

A10 Thunder(vThunder、ACOS 5.2.0)で、SSL アクセラレータ(SSL オフロード)を設定し、動作を確認します。HTTPS の暗号化と復号を Web サーバではなく Thunder で行うことで、サーバの処理の負担を減らせます。

Web サーバvThunderクライアント HTTP(平文) HTTPS(SSL で暗号化) SSL の暗号化・復号を処理
図1 SSL オフロードの考え方(クライアントとの間は HTTPS、サーバとの間は HTTP)

クライアントと Thunder の間は HTTPS で暗号化し、Thunder で復号してから、Web サーバへは HTTP で転送します。サーバ側は暗号化の処理をせずに済み、証明書も Thunder にまとめて置けます。

この記事でわかること
  1. Thunder で自己署名の SSL 証明書と秘密鍵を作る方法
  2. Client SSL テンプレートに証明書と秘密鍵を登録する方法
  3. HTTPS の仮想ポートを作ってテンプレートを適用する方法
  4. ブラウザとセッション情報での動作確認

検証構成

前提の構成

次の記事の構成をもとに設定します。Virtual Server vip-web(10.0.10.200)と、Web-01・Web-02 をまとめたサービスグループ sg-web(ラウンドロビン)は作成済みです。

sg-web Web-01 10.0.200.100(TCP 80) Web-02 10.0.200.173(TCP 80) vThunder VIP 10.0.10.200 HTTPS 443 サーバ側 10.0.200.149 Internet Client https://www.hirotanoblog.work HTTPS(TCP 443) HTTP(TCP 80)
図2 検証構成(クライアント〜vThunder は HTTPS 443、vThunder〜Web サーバは HTTP 80)

設定する部品と、その関係は次のとおりです。証明書と秘密鍵を Client SSL テンプレートに登録し、そのテンプレートを HTTPS の仮想ポートに適用します。

証明書/秘密鍵ssl-hirotanoblog.workClient SSLtemp_hirotanoblog.workVirtual Portvip-web HTTPS 443Service Groupsg-webSTEP 1 で作成STEP 2 で作成STEP 3 で作成L4/L7 の記事で作成済み
図3 設定する部品の関係

SSL 証明書を作る

画面イメージについて

この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。

自己署名証明書と秘密鍵を作る

今回はテストのため、Thunder 自身が発行する自己署名証明書を使います。ADC ›› SSL Management を開き、Create をクリックします。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SSL Management ›› Create
Create As◉ Certificate○ CSR
1File Namessl-hirotanoblog.work
CSR Generate☐
Cert TypeRSA
Secured☐
2Common Namewww.hirotanoblog.work
⋮ (Division、Organization、Locality、State or Province は空欄)
3CountryAfghanistan
Email 
4Valid Days730
5Key Size2048
Cancel6Create
図4 自己署名証明書の作成画面(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1File NameThunder に保存する証明書と秘密鍵の名前。ssl-hirotanoblog.work とします。
2Common Name証明書のドメイン名(コモンネーム)。クライアントがアクセスする名前と同じ www.hirotanoblog.work にします。
3Country必須の項目です。今回は Afghanistan(AF、一覧の先頭)のまま作ったため、証明書の発行者は /C=AF/… になりました。実際に使う場合は国を選び直します。
4Valid Days証明書の有効日数。今回は 730(2年)にしました。
5Key Size鍵の長さ。2048 ビットを選びます。
6Create証明書と秘密鍵を作ります。

作成すると、SSL Management の一覧に、証明書と秘密鍵の組(Type が certificate/key)が表示されます。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SSL Management
SSL Certificate NameTypeExpirationIssuer
1ssl-hirotanoblog.workcertificate/keyNov 14 06:10:56 2023 GMT/C=AF/CN=www.hirotanoblog.work
図5 作成した証明書と秘密鍵(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1Type/Expiration/Issuercertificate/key は、証明書と秘密鍵の両方が登録されていることを表します。有効期限は作成日から 730 日後の 2023年11月14日で、自己署名のため、発行者(Issuer)は証明書自身の名前(CN=www.hirotanoblog.work)です。

SSL テンプレートを作る

Client SSL テンプレートを作る

クライアントとの間の SSL の設定は、Client SSL テンプレートにまとめます。ここに、作成した証明書と秘密鍵を登録します。ADC ›› Templates ›› SSL を開き、Create ›› Client SSL を選びます。

vThunder 設定画面(GUI)画面イメージ
ADC ›› Templates ›› SSL ›› Create Client SSL
1Nametemp_hirotanoblog.work
⋮ (Auth Username、CA Certs などは空欄)
Chain Certificate 
2Server Certificatessl-hirotanoblog.work
Alternate Server Certificate 
Server Private Keyssl-hirotanoblog.work
Server Private Key Passphrase 
Cancel3OK
図6 Client SSL テンプレートの作成画面(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1Nameテンプレートの名前。temp_hirotanoblog.work とします。
2Server Certificate/Server Private Keyクライアントに提示する証明書と、その秘密鍵。どちらも STEP 1 で作った ssl-hirotanoblog.work を選びます。
3OKテンプレートを作ります。SSL テンプレートの一覧に、Type が Client SSL の temp_hirotanoblog.work が表示されます。
Client SSL と Server SSL

Client SSL テンプレートは、クライアントと Thunder の間の SSL を受け持ちます。Thunder とサーバの間も暗号化したい場合は、別に Server SSL テンプレートを使います。今回はサーバとの間を HTTP にするので、Client SSL テンプレートだけを使います。

仮想ポートにテンプレートを適用する

HTTPS の仮想ポートを作る

作成済みのバーチャルサーバ vip-web に、HTTPS 用の仮想ポートを追加し、Client SSL テンプレートを適用します。ADC ›› SLB ›› Virtual Servers で vip-web を開き、Virtual Port の Create をクリックします。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Virtual Servers ›› vip-web ›› Create Virtual Port
Name 
1ProtocolHTTPS
Port or Port Range443
Connection Limit64000000
ActionEnable
⋮ (Support HTTP2、Source NAT 関連は空欄)
2Service Groupsg-web
3Template Client SSLtemp_hirotanoblog.work
Template Server SSL 
Template Cache 
Template HTTP 
Persist Type○ Destination IP○ Source IP○ Cookie
Cancel4Create
Virtual Port の一覧
Port / Port RangeProtocolActions
80httpEdit
5443httpsEdit
Cancel6Update
図7 HTTPS の仮想ポートの作成(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1Protocol/Port or Port RangeHTTPS を選び、ポート番号に 443 を入れます。
2Service Group振り分け先の sg-web を選びます。サーバ側は HTTP(TCP 80)のままです。
3Template Client SSLSTEP 2 で作った temp_hirotanoblog.work を選びます。
4Create仮想ポートを追加します。
5443(https)既存の 80(http)に加えて、443(https)の仮想ポートが一覧に並びます。
6Updateバーチャルサーバの設定を保存します。

ADC ›› SLB ›› Virtual Servers で、vip-web と、http・https の仮想ポートの Status が緑になっていることを確かめます。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Virtual Servers
StatusNameIP Address
vip-web10.0.10.200
http80
1https443
図8 HTTPS の仮想ポートが Up している(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1https の Status(緑)緑:443(https)の仮想ポートが Up しています。

動作確認

DNS で、www.hirotanoblog.work が VIP の 10.0.10.200 に名前解決されるように設定します。そのうえで、ブラウザで https://www.hirotanoblog.work にアクセスします。

クライアントのブラウザ画面イメージ
https://www.hirotanoblog.work
Web-02アドレスバーには「保護されていない通信」の警告
証明書の情報
www.hirotanoblog.work自己署名ルート証明書/有効期限 2023年11月14日/この証明書は第三者によって検証されていません
図9 HTTPS でアクセスできた結果と証明書の情報(実際の画面ではなく、表示結果のイメージです)

HTTPS でアクセスでき、Web-02 の画面が表示されました。証明書を見ると、Thunder で作った www.hirotanoblog.work の自己署名証明書が使われています。自己署名証明書はブラウザが信頼する認証局が発行したものではないため、証明書の警告が出ますが、今回はテストなのでそのまま進めます。

本番で使う場合

本番では自己署名証明書ではなく、認証局が発行した証明書を使います。ADC ›› SSL Management の Create As で CSR を選ぶと証明書署名要求(CSR)を作れるので、認証局に申請して発行された証明書を Thunder に登録し、Client SSL テンプレートで選びます。中間証明書がある場合は Chain Certificate に設定します。

セッション情報:443 で受けて 80 で転送

ADC ›› SLB ›› Session でセッションを見ると、Type が SLB-L7 のセッションができています。クライアントから Thunder までは TCP 443、Thunder から Web サーバまでは TCP 80 で接続していることがわかります。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Session
ProtocolForward SourceForward DestReverse SourceReverse DestType
Tcp(伏せています):54804110.0.10.200:443210.0.200.100:80(伏せています):548043SLB-L7
図10 HTTPS のセッション(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1Forward Dest 10.0.10.200:443クライアントは VIP の 443 番(HTTPS)に接続しています。
2Reverse Source 10.0.200.100:80Thunder は復号した通信を、Web-01 の 80 番(HTTP)に転送しています。
3Type SLB-L7HTTP の中身を扱う L7 の負荷分散として処理しています。SSL を Thunder で終端して HTTP を読むので、L7 の処理になります。

うまくいかないとき

状態よくある原因確認すること
HTTPS で接続できない仮想ポート 443 が https ではない。Client SSL テンプレートが適用されていないVirtual Port の Protocol と Template Client SSL
証明書の警告が出る自己署名証明書を使っている。Common Name とアクセスした名前が違う証明書の発行者と Common Name、アクセスに使った URL
Web の画面が返らないサービスグループのサーバがダウンしているServers と Service Groups の Status

まとめ

手順GUI の場所今回の設定
STEP 1 証明書と秘密鍵ADC ›› SSL Management ›› Createssl-hirotanoblog.work(自己署名、CN=www.hirotanoblog.work、2048 ビット)
STEP 2 Client SSL テンプレートADC ›› Templates ›› SSL ›› Create ›› Client SSLtemp_hirotanoblog.work(Server Certificate と Server Private Key に STEP 1 の証明書と鍵)
STEP 3 HTTPS の仮想ポートADC ›› SLB ›› Virtual Servers ›› vip-webHTTPS 443、Service Group sg-web、Template Client SSL temp_hirotanoblog.work

SSL オフロードでは、クライアントとの間の HTTPS を Thunder で終端し、サーバとの間は HTTP で転送します。設定は「証明書と秘密鍵 → Client SSL テンプレート → HTTPS の仮想ポート」の順に作ると、迷わずに進められます。

コメント