solarisのKSSLをつかう

おはようございます。インフラ宮下です。

最近はopensslの脆弱性が頻繁に取りざたされています。
そこで今回はKSSLを使ってSSLをterminateする設定を紹介します。

1.環境

サーバ:oracle spark enterprise T2000
OS:solaris10

とても古い環境です。

構成:コンテナ構成でWEBサーバはlocal ZONEに構築されています。
   KSSLで終端するのはglobal ZONEです。
   local ZONEのWEBサーバでは、8888ポートでListenするように設定しています。

2.証明書の準備

KSSLで渡せる証明書情報は1ファイルだけなので、「証明書+中間証明書+秘密鍵」の順番で情報を貼り付けたファイルをGlobal ZONEから見れる場所に設置する。

[shell]# vi /etc/httpd/keys/abc.net.key
[/shell]

3.SMFにKSSLサービスを登録する

[shell]ksslcfg create -f pem -i /etc/httpd/keys/abc.net.key -x 8888 zone-web01 443
[/shell]

「zone-web01」はforward先のサーバを差します。(今回はlocal ZONEのWEBサーバ)
この名前は、DNSで引けるかhostsに登録してある必要があります。
「-i」…設置した証明書を指定する。経験的にファイルの権限とかに制約はない
「-x」…配下のサーバと通信ポート番号。webサーバがListenしているポートです
「zone-web01」…terminate後の接続先サーバ名
「443」…KSSL自体が待ち受けるポート

[shell]# svcs -a|grep ssl
online 10:15:01 svc:/network/ssl/proxy:kssl-zone-web01-443
[/shell]
Global Zoneでこのように「online」となれば起動成功です。

4.local ZONEで確認する

今まで実施した限りでは、KSSLを起動しても勝手にバインドしてくれませんでした。
なのでWEBサービスを再起動する必要があります。
(今回はapacheを例に実施)

[shell]# svcs -a|grep apache
online 15:33:22 svc:/network/http:apache2-web01
[/shell]

WEBサービスもSMFに登録してある前提ですが上のサービスを再起動します。

[shell]# svcadm restart apache2-web01
online 15:33:22 svc:/network/http:apache2-web01
# svcs -a|grep apache
online 18:00:10 svc:/network/http:apache2-web01

○確認
# netstat -a|grep 443|grep LISTEN
TCP: IPv4
Local Address Remote Address Swind Send-Q Rwind Recv-Q State
——————– ——————– —– —— —– —— ———–
zone-web01.443   *.* 0 0 49152 0 LISTEN
[/shell]

これでKSSLをSSLのプロキシとしてWEBサーバの構築が完了です。
terminate処理がwebサーバとリソース分離されているので速度は速いです。

ただ結局opensslのライブラリとか使っているのでアップデートがoracle社次第だったりします。

おすすめ記事