Apache with SSL
Apache をSSLで暗号化した通信に対応させるための設定手順です。
Apache をSSL化する方法はいくつかありますが、ここでは mod_ssl を組み込む方法にします。
必要なソフト
apache_1.3.37.tar.gz |
mod_ssl-2.8.28-1.3.37.tar.gz |
openssl-0.9.8b.tar.gz |
Apache2.xであれば最初からmod_ssl が同梱されているので、別途 mod_ssl を用意する必要はないですが 試したことがないので、ここではapache1.3.x を前提にします。
インストール手順
■OpenSSL のインストール
$ gzip -d -c openssl-0.9.8b.tar.gz | tar xvf - $ cd openssl-0.9.8b $ ./config $ make $ make test $ su # make install
■mod_ssl のコンパイル
$ gzip -d -c mod_ssl-2.8.28-1.3.37.tar.gz | tar xvf - $ gzip -dc apache_1.3.37.tar.gz | tar xvf - $ cd mod_ssl-2.8.28-1.3.37 $ ./configure \ --with-apache=../apache_1.3.37 \ --with-ssl=../openssl-0.9.8c \ --prefix=/usr/local/apache_1.3.37 --enable-module=so
■apache のインストール
$ cd ../apache_1.3.37 $ make $ make certificate $ make install
サーバ証明書作成手順
SSL暗号化通信で使用されるサーバ証明書を取得するには、CSR(申請書・署名リクエスト)をVeriSign, Inc. などの認証局に提出する。
CSRには公開鍵が含まれていて秘密鍵とペアで作成ます。
認証局はCSRに署名を付加して、サーバ証明書として発行します。
1.擬似乱数の情報生成
# cd /usr/local/ssl/bin # openssl md5 * > rand.dat 擬似乱数としてmd5ダイジェスト値を指定
乱数を生成するためには /dev/random を使用しますが、Solaris8 では/dev/random がインストールされてないので Sunsolveからパッチ 112438-03 をダウンロードしてpatchaddする。 (ユーザー登録が必要)
# unzip 112438-03.zip # patchadd 112438-03
再起動すると /dev/random が生成されます。
2.秘密鍵の作成
# ./openssl genrsa -rand rand.dat -des3 1024 > server.key 秘密鍵を保護するためのパスフレーズの入力を求められるので 任意のパスフレーズを入力 ・-des3オプション 暗号化の方式をdes3にする ・1024 生成する鍵のbit数を1024にする
3.パスフレーズを解除した秘密鍵を準備
# ./openssl rsa -in server.key -out server.key 秘密鍵のパスフレーズを入力 パスフレーズを解除しておかないと、Apache起動時にパスワードを要求される。
秘密鍵の内容を表示、owner、パーミッションの確認
# ./openssl rsa -text -in server.key Private-Key: (1024 bit)、publicExponent: 65537 (0x10001)であること。
# ./openssl req -new -days 365 -key server.key -out server.csr 秘密鍵のパスフレーズを入力(msaito) ・daysオプション 安全のために証明書の有効期限を365日(1年)に設定。 Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:Kanagawa Locality Name (eg, city) []:zushi Organization Name (eg, company) [Internet Widgits Pty Ltd]:SAITO CORPORATION Organizational Unit Name (eg, section) []:INFOMATION SYSTEM DEPARTMENT Common Name (eg, YOUR name) []:www.example.co.jp Email Address []:pine@gray.plala.or.jp Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
作成したCSRの内容を表示
# ./openssl req -text -in server.csr ・Subject: C=JP, ST=Kanagawa, L=zushi, O=SAITO CORPORATION, \ OU=INFOMATION SYSTEM DEPARTMENT, CN=www.example.co.jp ・Public Key Algorithm: rsaEncryption ・RSA Public Key: (1024 bit) ・Exponent: 65537 (0x10001) ・challengePassword:
外部に公開する場合、このCSRを認証局に送付して認証を依頼するのですが、今回はSSL暗号化通信を確認するだけが目的なので自分でサーバー証明書を作成します。
# ./openssl x509 -in server.csr -out server.crt -req -signkey server.key Signature ok subject=/C=JP/ST=Kanagawa/L=zushi/O=Internet Widgits Pty Ltd/ \ CN=www.example.co.jp/emailAddress=pine@gray.plala.or.jp Getting Private key
証明書の組み込み
作成されたserver.csr(サーバ証明書)と server.key(秘密鍵)を以下の配置でコピーします。
# cp server.crt ${apache}/conf/ssl.crt/ # cp server.key ${apache}/conf/ssl.key/
Apacheの起動
設定が完了したらApacheを起動します。
# ${apache}/bin/apachectl sslstart