Apacheのインストールでかなり奇妙な問題が発生しています。ここに短い要約があります:
現在、httpsとサーバー証明書を使用してApacheをセットアップしています。これはかなり簡単で、箱から出してすぐに機能します-予想どおり。これは、このセットアップの構成です。
Listen 443
SSLEngine on
SSLCertificateFile "/progs/Apache/ssl/example-site.no.pem"
SSLCertificateKeyFile "/progs/Apache/ssl/example-site.no.key"
SSLCACertificateFile "/progs/Apache/ssl/ca/example_root.pem"
SSLCADNRequestFile "/progs/Apache/ssl/ca/example_intermediate.pem"
SSLVerifyClient none
SSLVerifyDepth 3
SSLOptions +StdEnvVars +ExportCertData
RequestHeader set ssl-ClientCert-Subject-CN "%{SSL_CLIENT_S_DN}s"
RewriteEngine On
ProxyPreserveHost On
ProxyRequests On
SSLProxyEngine On
...
<LocationMatch /secureStuff/$>
SSLVerifyClient require
Order deny,allow
Allow from All
</LocationMatch>
...
<Proxy balancer://exBalancer>
Header add Set-Cookie "EX_ROUTE=EB.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
BalancerMember http://10.0.0.1:7200 route=ee1 retry=300 flushpackets=off keepalive=on
BalancerMember http://10.0.0.2:7200 route=ee2 retry=300 flushpackets=off keepalive=on status=+H
ProxySet stickysession=EX_ROUTE scolonpathdelim=Off timeout=10 nofailover=off failonstatus=505 maxattempts=1 lbmethod=bybusyness
Order deny,allow
Allow from all
</Proxy>
RewriteCond %{REQUEST_URI} !^/index.html [NC]
RewriteRule ^/(.*)$ balancer://exBalancer/$1 [P,NC]
ProxyPassReverse / balancer://exBalancer/
Header edit Set-Cookie "(.*)" "$1;HttpsOnly"
...
つまり、すべてが正常に機能し、LocationMatchディレクティブの一部ではないすべてのページで期待どおりに機能します。
LocationMatchディレクティブに一致するものを要求すると、証明書が要求され(したがって、SSLVerifyClientの必須属性)、ルート/中間チェーンに基づくブラウザーですべての正しい証明書を取得します。証明書を選択して[OK]をクリックすると、Apacheログに次のように表示されます。
[ssl:info] [pid 9530:tid 25] [client:43357] AH01998:子86への接続が異常終了したシャットダウンで閉じられました([Thu Oct 11 09:27:36.221876 2012] [ssl:debug] [pid 9530:tid 25 ] ssl_engine_io.c(1171):( 70014)ファイルの終わりが見つかりました:[クライアント10.235.128.55:45846] AH02007:システムによってSSLハンドシェイクが中断されました[ヒント:ブラウザーで停止ボタンが押されましたか?!]
そして、これはログをスパムするだけです。ここで何が起きてるの?この構成はローカルマシンで機能しているのがわかりますが、サーバーの1つでは機能していません。サーバー間に構成の違いはなく、アプリケーションごとのわずかな変更のみです。
私は次のことを試しました:1)CA証明書の削除(動作)2)サイト全体に必要なCA証明書の追加(動作)3)「SSLVerifyClientオプション」の追加が機能しない4)++
地元:
-OpenSSL v.1.0.1x -Apache 2.4.3 -Ubuntu -mpm:event-すべての構成をオンにする必要があります
(失敗した)サーバー:
-OpenSSL 0.9.8e -Apache 2.4.2 -SunOS -mpm:worker-すべての構成をオンにする必要があります
さらに情報が必要な場合はお知らせください。すぐに提供します。
簡単な要約:
-Apache2.4の実行-サーバー証明書は正常に機能します-一部の/ Locationsのクライアント証明書は機能せず、エラーで失敗します
PS:
OpenSSLバージョンおよびTLS/SSLv3に関連する「再ネゴシエーション」のものに関連している可能性がありますか?
使用しているSunOS用にコンパイルされたApacheのバージョンに問題があるようです。これはここで説明されています:- http://svn.Apache.org/viewvc?view=revision&revision=1373439
これに加えて、openssl v1.0.1cにアップグレードして、他のいくつかの問題を修正しました。
要約すると、SunOSとApache2.4.0、2.4.1、または2.4.2を使用している場合は、SSLCachingの問題がそこで解決されているため、バージョン2.4.3にアップグレードする必要があります。
リソース: