SSL

0.9.6k または 0.9.7c 以降に更新すべし。

インストール

Apachemod_sslOpenSSLPHP をいただいてくる。

RingServer では Apache は /pub/net/apache/dist/httpd/, OpenSSL は /pub/net/openssl/source/, mod_ssl は /pub/net/www/mod_ssl/source/, PHP は /pub/net/www/php/distributions/ にある。 それぞれ同じディレクトリ(例: /usr/local/src)で展開。

以下では /usr/local/apache1328 といったところに Apache をインストールする。 これは複数のバージョンを置いておき,トラブルがあったら一つ前に戻せるようにするためである。 通常はここまで気にすることはない。

su -
cd openssl-0.9.7c
./config
make
make test
make install
cd ../mod_ssl-mod_ssl-2.8.15-1.3.28
./configure --with-apache=../apache_1.3.28
cd ../apache_1.3.28
OPTIM="-O2" SSL_BASE=../openssl-0.9.7c ./configure \
  --prefix=/usr/local/apache1328 --enable-module=so \
  --enable-module=ssl --enable-shared=ssl
make
# 証明書がない場合
make certificate TYPE=custom
# 証明書がある場合はそのパスを指定する
make certificate TYPE=existing CRT=/usr/local/ssl/certs/cert.pem KEY=/usr/local/ssl/private/key.pem
make install
cd ../php-4.3.2
./configure --with-apxs=/usr/local/apache1328/bin/apxs \
    --with-pgsql --without-mysql
make
make install
cp php.ini-recommended /usr/local/lib/php.ini

ここで /usr/local/apache1328/conf/httpd.conf と /usr/local/lib/php.ini を編集。 詳しくは Apache のページ参照。

特に httpd.conf で

<IfDefine SSL>
LoadModule ssl_module         libexec/libssl.so
LoadModule php4_module        libexec/libphp4.so
</IfDefine>

となってしまっている場合は

<IfDefine SSL>
LoadModule ssl_module         libexec/libssl.so
</IfDefine>
LoadModule php4_module        libexec/libphp4.so

のように変える。 AddModule についても同様。

これで古いものを止めて新しいものを立ち上げる。

/usr/local/apache古い/bin/apachectl stop
/usr/local/apache1328/bin/apachectl startssl

証明書を更新したら Secure Site シール のIssuer Digestも変えておかないといけない。

VeriSign テスト用認証取得

以下はほぼ古いままです。

入試業務にもSSLを使うとなると,いつまでもインチキ認証で通すわけにもいかないので, 正式な認証を取ってもらうことにしました。 とりあえず VeriSign Japan のテスト用認証を取得してみました。

設定は上記の Apacheサーバで安全なビジネス環境を構築するには のページに書いてある通りで大丈夫でした。 ただし,ここではコマンド名 ssleary を openssl で置き換えます。 以下に概要を記します。

でたらめなファイル rand.dat を用意しておきます。

$ openssl md5 * >rand.dat (たとえば)
$ openssl genrsa -rand rand.dat -des3 1024 >key.pem
XXX semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
......
Enter PEM pass phrase: hogehoge
Verifying password - Enter PEM pass phrase: hogehoge
$ openssl req -new -key key.pem -out csr.pem
Using configuration from /var/ssl/openssl.cnf
Enter PEM pass phrase:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Mie
Locality Name (eg, city) []:Matsusaka
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Matsusaka University
Organizational Unit Name (eg, section) []:Webserver Team
Common Name (eg, YOUR name) []:secure.matsusaka-u.ac.jp
Email Address []:webmaster@matsusaka-u.ac.jp

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

csr.pem は次のようなものです。

-----BEGIN CERTIFICATE REQUEST-----
ほげほげほげ……
-----END CERTIFICATE REQUEST-----

これを VeriSign に送ると,メールでセキュアサーバIDが送られてきます。 それをたとえば /usr/local/ssl/certs/cert.pem とします。 一方,最初にできた key.pem/usr/local/ssl/private/key.pem とします。 /usr/local/ssl/private は 700, /usr/local/ssl/private/key.pem は 400 のパーミッションにしておきます。 要するに,key.pem は絶対に他に漏れないようにしておきます。

上のようにした場合,Apache のソースツリーの中で,次のように打ち込みます。

make certificate TYPE=existing CRT=/usr/local/ssl/certs/cert.pem KEY=/usr/local/ssl/private/key.pem

これで証明書が Apache のインストールディレクトリの conf 以下にコピーされ,conf/httpd.confSSLCertificateFileSSLCertificateKeyFile が設定されます。

これで Apache を再起動します。

/usr/local/apache*/bin/apachectl stop
/usr/local/apache*/bin/apachectl startssl

キー生成時に入れたパスワードを打ち込むと起動します。

参考リンク

なお,Internet Explorer で「このセキュリティ証明書の日付は無効です」と表示されるのは,マイクロソフト社が valid(「有効」)を「無効」と 誤訳 したからです。


リンクはご自由にどうぞ。

松阪大学 奥村晴彦 okumura@matsusaka-u.ac.jp

Last modified: 2003-10-02 08:16:56