自さばで使ってる Perlbal で SSL を使えるようにしたいと思います。
必要なもの
Perlbal はすでにインストールされているので、SSL 関連のものをインストール。
% sudo aptitude install libssl-dev
% cpan IO::Socket::SSL
SSL認証鍵作成
% openssl req -x509 -newkey rsa:1024 -keyout server.key -out server.crt pem -nodes
(毎回このコマンドをコピペして使っているだけで正直よく分かっていないOpenSSL)
設定
今まで使っていた selector。
CREATE SERVICE balancer
SET role = selector
SET listen = 0.0.0.0:80
SET plugins = vhosts
SET persist_client = on
VHOST code.norainu.net = svn_proxy
VHOST labs.norainu.net = labs_proxy
ENABLE balancer
この service は特にいじらず引き続き 80 番ポートの面倒を見る。 で、443 番ポートの面倒を見る selector な service を追加。
CREATE SERVICE balancer_ssl
SET role = selector
SET listen = 0.0.0.0:443
SET plugins = vhosts
VHOST code.norainu.net = svn_proxy
VHOST labs.norainu.net = labs_proxy
SET enable_ssl = on
SET ssl_key_file = /etc/perlbal/certs/server.key
SET ssl_cert_file = /etc/perlbal/certs/server.crt
SET ssl_cipher_list = ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP:+eNULL
ENABLE balancer_ssl
Perlbal で SSL に関する設定は、今回使った4つだけ。実際には、IO::Socket::SSL 経由で Net::SSLeay を使ってるので、そっちで使えるものだけ(?)という感じ。。
確認
再起動して、ちゃんと listen してるか確認。
% sudo /etc/init.d/perlbal restart
% sudo lsof -i TCP -nP | grep perlbal
perlbal 2200 root 4u IPv4 2861896 TCP *:80 (LISTEN)
perlbal 2200 root 6u IPv4 2861898 TCP *:443 (LISTEN)
perlbal 2200 root 9u IPv4 2861899 TCP 127.0.0.1:6000 (LISTEN)
おk。ブラウザからのアクセスもちゃんとできた。