通常、Webサーバとクライアント間は HTTPプロトコルにより通信が行われる。
HTTP通信は平文で行われるため、ユーザ名やパスワードはもとより機密性の高い情報を扱う場合には通信を暗号化する必要がある。
そのため、SSL を利用して HTTP通信をセキュア化する。
SSL を利用する場合にはオプションに --enable-ssl を指定する。
tar zxvf httpd-2.2.10.tar.gz |
cd httpd-2.2.10 |
./configure --prefix=/usr/local/apache2 --enable-ssl --with-ssl=/usr/local/ssl |
make |
make install |
しかし、実際には以下のように SSL のライブラリが見つからないと言われる(LD_LIBRARY_PATH も設定済み)。
やむ得ないので configure の 15255 〜 15259行目をコメントアウトした(別に無くても問題なさそう)。
checking openssl/engine.h usability... yes |
checking openssl/engine.h presence... yes |
checking for openssl/engine.h... yes |
checking for SSLeay_version... yes |
checking for SSL_CTX_new... no |
checking for ENGINE_init... yes |
checking for ENGINE_load_builtin_engines... no |
checking for SSL_set_cert_store... no |
configure: error: ... Error, SSL/TLS libraries were missing or unusable |
インストールが完了したら Webサーバの設定を行います。
Include conf/extra/httpd-ssl.conf |
<VirtualHost _default_:443> |
ServerName 192.168.1.9:443 |
SSLCertificateFile "/usr/local/ssl/SERVER/cert.pem" |
SSLCertificateKeyFile "/usr/local/ssl/SERVER/servernopass.key" |
SSLVerifyClient require |
SSLVerifyDepth 1 |
これで、https で接続すれば SSL でアクセスできます。
但し、自己認証局を利用して署名したサーバ証明書を利用しているため、WEBブラウザでアクセスすると警告が表示されます。
この警告は、ブラウザに登録していない認証局が署名したサーバ証明書を利用している場合に表示します。
これを回避するには、作成した自己認証局の証明書をブラウザに登録します。
ブラウザには DERフォーマット(cacert.der)を配布して登録してください。
ブラウザに信用してよい認証局として登録すれば、次回の接続から警告は出なくなります。