web-dev-qa-db-ja.com

一部のURLのApache証明書が機能しない

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に関連する「再ネゴシエーション」のものに関連している可能性がありますか?

2
vegaasen

使用している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にアップグレードする必要があります。

リソース:

http://svn.Apache.org/viewvc?view=revision&revision=1373439

http://Apache-http-server.18135.n6.nabble.com/DO-NOT-REPLY-Bug-53040-New-Apache-2-4-1-Solaris-10-ssl-virtual- hosts-dies-after-idle-for-a-while-td4812609.html

1
vegaasen