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社次第だったりします。