OpenBlockSのapache+SSL
自宅サーバのapacheにSSLを追加しようかと思ったのだけど...--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
- CA用秘密鍵
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しか動いてないじゃんか!