OpenBlockSのapache+SSL

自宅サーバapacheSSLを追加しようかと思ったのだけど...--enable-sharedしとけばモジュールの追加だけで済むと思ってたんだけど、httpdのソースツリーに既に入ってる奴を、そこだけコンパイルするには?ようわからんので、結局apacheを再コンパイルすることにする。まずはOpenSSLから

$ tar zvf openssl-0.9.6c.tar.gz
$ cd openssl-0.9.6c
$ ./config
$ make
$ make test
# make install

これでOpenSSLが/usr/local/ssl/にインストールされる。次に

$ cd httpd
$ ./configure --enable-shared=yes --enable-dav=yes --enable-ssl=yes --with-ssl=/usr/local/ssl
$ make
# make install

restartしようとすると、

/usr/local/apache2/bin/httpd: error in loading shared libraries: libssl.so.0.9.6: cannot open shared object file: No such file or directory

なんてことをのたまうので、httpd.confに

LoadFile /usr/local/ssl/lib/libssl.so.0.9.6

と書いてみるが、状況変わらず。何でだー? こんなところではまってる暇はないので、

LD_LIBRARY_PATH=/usr/local/ssl/lib

として次へ進む。
次に証明書の発行。これが大変。単なるテスト用でいいんだけどなー。参考にさせてもらったのは、またもやおやじさんのページ。ほぼそのままだが、若干アレンジ。

  • 鍵作成用乱数データ生成
openssl dgst -md5 ../apache2/conf/* > rand.dat
openssl genrsa -des3 -out ca.key -rand rand.dat 1024
  • CA用証明書
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
openssl genrsa -des3 -out server.key -rand rand.dat 1024
  • サーバ用公開鍵
openssl req -new -key server.key -out server.csr
$ mv server.key server.key.bak
$ openssl rsa -in server.key.bak -out server.key
  • サーバ用証明書
$ /home/obss/downloads/src/apache/mod_ssl-2.0.13-1.3.3/ssl.contrib/ca_sign server.csr
  • ブラウザ・インポート用のCA証明書
$ openssl x509 -inform pem -in ca.crt -outform der -out ca.der

最後に、apacheの設定。httpd.confは一切変更無し。ssl.confの

  • ServerName
  • ServerAdmin
  • SSLCertificateFile
  • SSLCertificateKeyFile
  • SSLCertificateChainFile

をそれぞれ書き換えて完了。

# /usr/local/apache2/bin/apachectl startssl

で起動してhttpsでアクセスすればSSLが有効になるはずだが、何故かノーレス。httpはニコニコ動く。そんなに遅いのか?ログを見ても何も残っていない。何故だ...?proxyとか変な動きしてるかもしんないし、一応ネットワークも疑ってみるか。ローカルのw3mだと...動く! 何の問題も無い。おぉ、NATが80しか動いてないじゃんか!