おはようございます。インフラ宮下です。
最近は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社次第だったりします。