WWW サーバ
O R A N G E

Apache-SSL
Apache-ssl は WWW サーバとクライアントの間の通信を暗号化する機能を与えるソフトウェアである.これにより https 通信が実現可能となる.Apache-ssl を利用するには OpenSSL というソフトウェアが必要となる.

■ メモ
  • 認証局は簡易認証局.
  • SSL はパスワードなしで起動させる.
■ ダウンロード

最新版があればそちらをダウンロードする.

注: Apache-ssl は Apache の各バージョン毎に提供されている. ダウンロード時には Apache-ssl と Apache のバージョンを揃えなければならない ことに注意されたい.

ダウンロードしたソースは適当なディレクトリと /usr/src 以下にコピーする.

■ OpenSSL のインストール
$ tar zxvf openssl-0.9.8e.tar.gz
$ cd openssl-0.9.8e
$ ./config
$ make
$ make test
# make install
■ 準備

パスワードの用意.

  • 認証局 (CA) 用
  • サーバ管理用

作業ディレクトリの作成

$ cd ~mondo3/src/
$ mkdir ssl ssl/CA ssl/admin
□ openssl の設定変更
# vi /usr/local/ssl/openssl.cnf
[ CA_default ]

default_days = 400 # how long to certify for

[ req ]

default_bits = 1024 # IE5 以下のためにKEY長を512bitに

[ req_distinguished_name ]

countryName_default             = JA
stateOrProvinceName_default     = Hokkaido
localityName_default            = Sapporo
0.organizationName_default      = Earth and Planetaly science
organizationalUnitName_default  = Netcom
commonName_default              = Netcom
emailAddress_default            = epwww@ep.sci.hokudai.ac.jp
■ 認証局の構築

以下では mondo3 になって作業をする.

$ cd ~mondo3/src/ssl/CA
$ export PATH=/usr/local/ssl/bin:$PATH
$ /usr/local/ssl/misc/CA.sh -newca
CA certificate filename (or enter to create)

Making CA certificate ...
Using configuration from /usr/local/ssl/openssl.cnf
Generating a 512 bit RSA private key
.....+++++
................+++++
writing new priate key to './demoCA/private/./cakey.pem'
Enter PEM pass phrase:CA のパスワード
Verifying password - Enter PEM pass phrase:CA のパスワード
-----
(中略) -----
Country Name (2 letter code) [JA]:
State or Province Name (full name) [Hokkaido]:
Locality Name (eg, city) [Sapporo]:
Organization Name (eg, company) [Earth and Planetaly science]:
Organizational Unit Name (eg, section) [Netcom]:
Common Name (eg, YOUR name) [Netcom]:
Email Address [epwww@ep.sci.hokudai.ac.jp]:
■ サーバ証明書の発行要求

Apache-sslにて開示するサーバの 証明書作成作業

$ cd ~mondo3/src/ssl/admin
$ openssl req -new -keyout privatekey.pem -out csr.pem
Using configuration from /usr/local/ssl/openssl.cnf
Generating a 512 bit RSA private key
.++++++++++++
.......++++++++++++
writing new private key to 'privatekey.pem'
Enter PEM pass phrase: サーバ管理者のパスワード
Verifying password - Enter PEM pass phrase: サーバ管理者のパスワード
-----
(中略)
-----
Country Name (2 letter code) [JA]:
State or Province Name (full name) [Hokkaido]:
Locality Name (eg, city) [Sapporo]:
Organization Name (eg, company) [Earth and Planetaly science]:
Organizational Unit Name (eg, section) [Netcom]:
Common Name (eg, YOUR name) [Netcom]:
Email Address [epwww@ep.sci.hokudai.ac.jp]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
作成された server_csr.pem は, CA に認証してもらう為のリクエスト.
serber_privatekey.pem は, サーバの秘密鍵である.
■ サーバ証明書発行
# vi /usr/local/ssl/openssl.cnf
[ usr_cert ]

nsCertType = server
コメントアウトをはずす
$ cd ~mondo3/src/ssl/CA
$ cp ../admin/csr.pem .
$ openssl ca -out cert.pem -infiles csr.pem
Using configuration from /usr/local/ssl/openssl.cnf
Enter PEM pass phrase: CA のパスワード
Check that the request matches the signature
Signature ok
Certificate Details:
--- (中略) --- Certificate is to be certified until Jun 8 07:20:09 2003 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
server_cert.pem サーバ証明書. 公開鍵, 暗号化の方法, サーバの情報がはいっている
■ Apache-ssl のインストール

apache_1.3.37+ ssl_1.57.tar.gzは、apache_1.3.37 の ソースツリーのトップで展開しなければならない

$ cd apache_1.3.37
$ tar -zxvf ../apache_1.3.37+ssl_1.57.tar.gz
$ ./FixPatch

うまく行かないときは openssl のディレクトリを指定
Your version of patch is OK.
(略)
Do you want me to apply the OpenSSL EGD patch for you? [n] (Enter)
(略)
Do you want me to apply the fixed-up Apache-SSL patch for you? [n] y
patching file `src/support/apachectl'
patching file `src/support/suexec.c'
$ ./configure
$ make
# make install

注1 : 万が一 make に失敗するようなときは Makefile のリンカーコマンド部分に オプション "-ldl" をつけて 再実行する.

SSL_LIBS=-L$(SSL_LIB_DIR) -lssl -lcrypto -ldl
                                         ^^^^

注2 : 一度 make した内容を変更したい場合には,make clean を実行した後で make を実行しなければならない.make clean を行なわないと変更は上書きされない.

■ Apache-ssl の設定

起動時にパスワードを聞かれないようにする.

$ cd ~mondo5/src/ssl/admin/
$ openssl rsa -in privatekey.pem -out privatekey_nopass.pem
Enter pass phrase for privatekey.pem: サーバ管理者のパスワード
writing RSA key
以上のファイルを/usr/local/ssl/certs/にコピー
# cp privatekey_nopass.pem /usr/local/ssl/certs/privatekey.pem
# cp ../CA/cert.pem /usr/local/ssl/certs/.
# cp ~epwww/src/ssl/CA/demoCA/cacert.pem /usr/local/ssl/private/.
設定ファイルの編集. 内容はここを参照
# vi /usr/local/apache/conf/httpsd.conf
■ ssl の起動

Apache の設定ファイル httpsd.conf を読み込むようにする.

# /usr/local/apache/bin/httpsd -f /usr/local/apache/conf/httpsd.conf
■ 確認

ブラウザで例えば以下のような https のページにアクセスして、認証局に関するメッセージが表示されるか確認する.

https://www.ep.sci.hokudai.ac.jp/
■ その他

2006 年度の再構築作業では, 上記手順通りに作業を行うも, ブラウザ確認時に以下のようなエラーが出た.

-------------------------------------------------------------
sango.ep.sci.hokudai.ac.jp により提示された証明書は間違って
いるか改変されている、暗号化された接続を確立できません。
エラーコード:-8101
-------------------------------------------------------------
その際, /usr/local/ssl/private/cacert.pem の
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
以外の部分をコメントアウトすると成功した. ただし, 上記の部分を元に戻してもエラーが再現できなかった. 本当のエラーの原因はわからない.

参考サイト
Copyright © 2007 EPnetFaN
最終更新日: 2007/05/21 (山下 達也)