ブログ ランキング
インターネットサーバー設定・運用
HOME  | MYBlog  | MAIL 

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)であること。
4.秘密鍵からCSRを作成
# ./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