すべて SSL を使用する多数の仮想ホストをセットアップしました。すべてがうまくいきました。次に、そのうちの 1 つに SSL クライアント認証を追加する必要がありました (これを SVN ホストと呼びましょう)。SVN ホストのクライアント証明書を有効にした後、ホストは動作を停止し、代わりにデフォルトの仮想ホストが使用されます (つまり、一致しないサーバー証明書が提供されるため、安全なホストへのアクセスもクライアント認証も行われません)。仕事)。
私が使用している仮想ホスト構成は次のとおりです。
<VirtualHost *:443>
ServerName svn.anydomain.com
SSLEngine on
SSLOptions +StrictRequire
SSLProtocol -all +TLSv1
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:!SSLv3:RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile /etc/certs/svn.crt
SSLCertificateKeyFile /etc/certs/svn.key
SSLCertificateChainFile /etc/certs/starcom/sub.class1.server.ca.pem
SSLCACertificateFile /etc/certs/cacert.crt
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
SSLVerifyClient require
SSLVerifyDepth 2
SSLUserName SSL_CLIENT_S_DN_CN
<Location /path0>
DAV svn
SSLRequireSSL
SVNPath /var/svn/path0
#Require valid-user
</Location>
<Location /path1>
DAV svn
SSLRequireSSL
SVNPath /var/svn/path1
#Require valid-user
</Location>
</VirtualHost>
また、この問題は Mac OS X でのみ発生するようです。Windows 8 から問題なくホストにアクセスできます。基本的に、私の Mac では、curl でこれらのオプションを使用した場合にのみ動作させることができます (一貫性がない場合もあります)。
curl -v -v -v -1 -k --cacert Documents/Certs/CACert.pem --cert Documents/Certs/ClientCert.pem https://svn.anydomain.com/path1
これは代わりに失敗します (TLSv1 ではなく SSLv3 の -1 ではなく -3 に注意してください)。
curl -v -v -v -3 -k --cacert Documents/Certs/CACert.pem --cert Documents/Certs/ClientCert.pem https://svn.anydomain.com/path1
デフォルトの仮想ホストの証明書を返します。この動作 (間違った仮想ホスト) は、Mac (Safari、Eclipse+Subversive、Cornerstone など) 上のそのドメインへのアクセスに対して得られるものです。
何か案は?