WWW サーバ
O R A N G E

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

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

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

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

パスワードの用意.

  • 認証局 (CA) 用
  • サーバ管理用
  • クライアント用
  • ブラウザ取り込み用

作業ディレクトリの作成

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

[ 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
emailAddress_default = epwww@ep.sci.hokudai.ac.jp
■ 認証局の構築

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

$ cd ~epwww/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 private 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 ~epwww/src/ssl/admin
$ openssl req -new -keyout securekey.pem -out csr.pem
Using configuration from /usr/local/ssl/openssl.cnf
Generating a 512 bit RSA private key
.++++++++++++
.......++++++++++++
writing new private key to 'securekey.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 []:
■ サーバ証明書発行
# vi /usr/local/ssl/openssl.cnf
[ usr_cert ]

nsCertType = server
コメントアウトをはずす
$ export PATH=/usr/local/ssl/bin:$PATH
$ cd ~epwww/src/ssl/CA
$ cp ../admin/csr.pem .
$ openssl ca -out server_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
The Subjects Distinguished Name is as follows
countryName :PRINTABLE:'JA'
stateOrProvinceName :PRINTABLE:'Hokkaido'
localityName :PRINTABLE:'Sapporo'
organizationName :PRINTABLE:'Earth and Planetaly science'
organizationalUnitName:PRINTABLE:'Netcom'
commonName :PRINTABLE:'Netcom'
emailAddress :IA5STRING:'epwww@ep.sci.hokudai.ac.jp'
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
■ 展開

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

$ tar -zxvf apache_1.3.22.tar.gz
$ cd apache_1.3.22
$ tar -zxvf ../apache_1.3.22+ssl_1.45.tar.gz
■ FixPatch の実行
$ ./FixPatch

うまく行かないときは openssl のディレクトリを指定
Your version of patch is OK.
(略)
Do you want me to apply the OpenSSL EGD patch for you? [n] (Entrer)
(略)
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'
■ Apache-ssl のインストール
$ ./configure
$ make
# make install
■ Apache-ssl の設定

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

$ cd ~epwww/src/ssl/admin/
$ export PATH=/usr/local/ssl/bin:$PATH
$ openssl rsa -in securekey.pem -out securekey_unpass.pem
read RSA key
Enter PEM pass phrase: サーバ管理者のパスワード
writing RSA key
以上のファイルを/usr/local/ssl/certs/にコピー
# cp securekey_unpass.pem /usr/local/ssl/certs/securekey.pem
# cp ../CA/server_cert.pem /usr/local/ssl/certs/.

# vi /usr/local/apache/conf/httpsd.conf

設定ファイルはここを参照

■ クライアント証明書発行要求
$ cd ~epwww/src/ssl/CA
$ export PATH=/usr/local/ssl/bin:$PATH
$ openssl req -new -keyout privatekey.pem -out privatecsr.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]:epwww
Common Name (eg, YOUR name) []:epwww
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 []:
■ クライアントの証明書発行
# vi /usr/local/ssl/openssl.cnf
[ usr_cert ]

nsCertType = client
$ cd ~epwww/src/ssl/CA
$ export PATH=/usr/local/ssl/bin:$PATH
$ openssl ca -out private_cert.pem -infiles privatecsr.pem
Using configuration from /usr/local/ssl/openssl.cnf
Enter PEM pass phrase: CA のパスワード
Check that the request matches the signature
Signature ok
The Subjects Distinguished Name is as follows
countryName :PRINTABLE:'JA'
stateOrProvinceName :PRINTABLE:'Hokkaido'
localityName :PRINTABLE:'Sapporo'
organizationName :PRINTABLE:'Earth and Planetaly science'
organizationalUnitName:PRINTABLE:'epwww'
commonName :PRINTABLE:'epwww'
Certificate is to be certified until Jun 8 08:06:59 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
■ 作成した証明書の確認
$ openssl x509 -in ../CA/private_cert.pem -text
■ ブラウザに組み込み可能なPKCS#12形式に変換
$ openssl pkcs12 -export -inkey privatekey.pem -in private_cert.pem -certfile ../CA/demoCA/cacert.pem -name epwww -out private_cert.p12
Enter PEM pass phrase:クライアントのパスワード
Enter Export Password:ブラウザ取り込み用のパスワード
Verifying password - Enter Export Password:ブラウザ取り込み用のパスワード
■ クライアント認証するために apache-ssl の設定ファイルを変更
0 - 認証を必要としないとき
1 - クライアントが合法的な証明書を提示するかもしれない。
もし認証が提示されれば、サーバに格納している証明書は、 合法的な認証局(CA)が発行したものでなければならない。
2 - クライアントが合法的な証明書を提示しなければならない。
3 - クライアントが合法的な証明書を提示するかもしれない、 しかし、サーバに格納している証明書は、 合法的な認証局(CA)が発行したものでなくてもよい。
# emacs /usr/local/apache/conf/httpsd.conf
SSLCACertificatePath /usr/local/ssl/private
SSLCACertificateFile /usr/local/ssl/private/cacert.pem
SSLVerifyClient 3
# cp ~epwww/src/ssl/CA/demoCA/cacert.pem /usr/local/ssl/private/.
■ DER形式のファイルを作成
$ cd ~epwww/src/ssl/CA
$ export PATH=/usr/local/ssl/bin:$PATH
$ openssl x509 -inform pem -outform der -in demoCA/cacert.pem -out cacert.der
■ ssl の起動

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

# /usr/local/apache/bin/httpsd -f /usr/local/apache/conf/httpsd.conf
参考サイト
Copyright © 2002 EPnetFaN
最終更新日: 2002/06/24 (高橋 こう子)