ziguzagu.org

Perlbal で SSL を使う

自さばで使ってる 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。ブラウザからのアクセスもちゃんとできた。