2009年11月25日アーカイブ

Apacheが2.2.12からSNIに対応したと言うので、試してみようと思ったが、SNIに対応するにはopensslが0.9.8f以降でないといけないらしい。
FreeBSD 7.1のopensslは0.9.8eなので保留していたのだが、portsに0.9.8lが入っていたので試してみた。
portsからsecurity/opensslをインストールして、www/apache22を再インストールすると、勝手に-with-ssl=/usr/localとか言ってportsから入れた0.9.8lを認識してくれるようだ。
早速、以前作ってあった別名用のサーバ証明書を見るようにssl.confを書き換えてみたが、
SSL peer was unable to negotiate an acceptable set of security parameters.

(エラーコード: ssl_error_handshake_failure_alert)
なんてエラーで繋がらない。(Firefoxの場合)
どうも、SSLVerifyClient require の指定があるとうまくいかないようだ。
別の環境に一からapacheをインストールして、証明書関連も作り直して試してみたところ、以下のことがわかった。
Listen *:443
NameVirtualHost *:443
<VirtualHost *:443>
ServerName hoge.example.com
SSLEngine on
SSLCertificateFile /usr/local/etc/apache22/ssl/server.crt
SSLCertificateKeyFile /usr/local/etc/apache22/ssl/server.key
SSLCertificateChainFile /usr/local/etc/apache22/ssl/ca.crt
SSLCACertificateFile /usr/local/etc/apache22/ssl/ca.crt
<Location /test>
SSLVerifyClient require
</Location>
</VirtualHost>
のように、Locationの中にSSLVerifyClient require があるとそのURLでのみ失敗する。Locationの外側(サイト全体)に書いてやると、ちゃんとクライアント認証した上で接続できる。
これが、proxyがある場合とない場合でも微妙に挙動が違うようだが整理しきれていない。
Bug 12355 - POST incompatible w/ renegotiate https: connectionと言うのが見つかったが、この問題自体は2.2では修正済みとも読める。
WebDAV/Apache/HTTPSクライアント認証と言うのも見つけたので試してみたが効かないようだ。
[debian-users:53339] [Translate] [SECURITY] [DSA-1934-1] New apache2 packages fix severalissuesみたいな話も見つけたが、関係あるだろうか?

他にも、SSLOptionsに+OptRenegotiateを付けてみたり、CA.shを使って証明書を作り直したりしてみたが改善せず。
wiresharkでパケットを覗いてみたりもしたがさっぱりわからないので、とりあえずお手上げ状態です。

2009年11月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

このアーカイブについて

このページには、2009年11月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2009年11月10日です。

次のアーカイブは2009年11月28日です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.1.1