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