オレオレ証明書設定手順
毎回ググっているので、メモっておく。
参考にしたのは、http://www.stackasterisk.jp/tech/systemConstruction/apache09_03.jsp#3_2
環境は CentOS 5.1 だったと思う。あと Apache2
秘密鍵作成
/etc/pki/tls/private 以下にサーバ用の秘密鍵作成。
[root@gentoo private]# openssl genrsa -des3 -out server.key 1024 Generating RSA private key, 1024 bit long modulus .....++++++ ...++++++ e is 65537 (0x10001) Enter pass phrase for server.key: Verifying - Enter pass phrase for server.key:
証明書作成
[root@gentoo certs]# openssl req -new -x509 -days 3560 -key ../private/server.key -out server.crt Enter pass phrase for ../private/server.key: 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) [GB]:JP State or Province Name (full name) [Berkshire]:Unknown Locality Name (eg, city) [Newbury]:Unknown Organization Name (eg, company) [My Company Ltd]:Unknown Organizational Unit Name (eg, section) :Unknown Common Name (eg, your name or your server's hostname) :サーバのドメイン名 Email Address []:Unknown [root@gentoo certs]#
- -
秘密鍵のパスフレーズを解除
Apache 起動時のパスフレーズ入力を不要とするために、/etc/pki/tls/private/server.key のパスフレーズを解除する。
ついでに、パーミッションを変更しておく。いまのところ 600 で動いているっぽい。*1
[root@gentoo private]# openssl rsa -in server.key -out server.key Enter pass phrase for server.key: writing RSA key [root@gentoo private]# chmod go-rwx server.key [root@gentoo private]#
複数ホスト/ドメインへの対応
名前ベースのバーチャルホストとSSLを組み合わせたかったのです、普通にやったら出来ないようです。
SSL 通信の開始時点では、Apache はクライアントがどのホストに接続しようとしているのかが判別できません。このため1番目のVirtualHostディレクティブの内容に従い、サーバ証明書を返すらしいです。
この問題を解決する方法として、
があるようです。
以下のサイトを参考に、別名を定義してバーチャルホスト対応してみたいと思います。
http://websec-memo.blogspot.com/2007/07/virtualhostssl.html
http://d.hatena.ne.jp/defiant/20070919#1190188122
openssl.conf のどこに subjectAltName を追加したらよいのか分からなかったので片っ端から試しました。どうやら、v3_ca セクションに追加すれば署名後の証明書に含まれるみたいです。
[ v3_ca ] subjectAltName = DNS:*.foo.bar,DNS:*.hoge.fugu
CN に記述した値も subjectAltName に書いたほうが無難みたいです。