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を書き換えてみたが、
どうも、SSLVerifyClient require の指定があるとうまくいかないようだ。
別の環境に一からapacheをインストールして、証明書関連も作り直して試してみたところ、以下のことがわかった。
これが、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でパケットを覗いてみたりもしたがさっぱりわからないので、とりあえずお手上げ状態です。
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でパケットを覗いてみたりもしたがさっぱりわからないので、とりあえずお手上げ状態です。
どうも、DSA-1934-1 を読んでいたら、CVE-2009-3555ってのに辿り着いて、そこにopenssl 0.9.8l releasedってのがあって、「This new OpenSSL version is a security release which disables renegotiation
as a workaround for CVE-2009-3555.」とか書いてあるから、これが原因のような気がしてきた。
しかし、これは暫定対応で、TLS/SSLのプロトコルを変えないと治らないよん的なことが書いてあるので、どうなるんかなあ。
しかし、これは暫定対応で、TLS/SSLのプロトコルを変えないと治らないよん的なことが書いてあるので、どうなるんかなあ。
カテゴリ
Networkトラックバック(1)
このブログ記事を参照しているブログ一覧: クライアント認証ができなくなった
このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/2211
» クライアント認証ができるようになった(PC日記)~のトラックバック
以前、opensslが0.9.8lになったくらいからパス限定のクライアント認証ができなくなっていた。 当時は、sslのセキュリティー対策でできなくなってい... 続きを読む
コメントする