3

これは、このフォーラムでの私の最初の質問です。間違いがあった場合は事前にお詫び申し上げます。SSL と APR を使用した Tomcat の構成に問題があります。

コンテキスト: tomcat 7、Java 7、OpenSSL、いくつかの有効な x509 証明書。

私のhttpsコネクタ:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true"
           SSLVerifyClient="require" SSLVerifyDepth="3"
           SSLCertificateFile="${catalina.home}/security/server.pem"
           SSLCertificateKeyFile="${catalina.home}/security/server.key"
           SSLCertificateChainFile="${catalina.home}/security/trust.pem"
           SSLCACertificateFile="${catalina.home}/security/trust_ca.pem"
           />

PKI ツリー:

ROOT -> CA_intermediate -> CA4Servers -> server (tomcat)
                                      -> serv2Cert
                        -> CA4People  -> people1Cert

Windows キーストアに 2 つの証明書を持つ Windows PC クライアント (Windows-MY): people1Cert と serv2Cert

trust.pemには、ROOT、CA_intermediate、CA4Servers、および tomcat pem でエンコードされた公開鍵が含まれます。 trust_ca.pem trust.pemのすべてですが、tomcat 証明書です。

私が欲しいもの: に 行くとhttps://tomcat.server:8443/、ブラウザは 1 つの証明書を含む証明書選択ダイアログを表示します: serv2Cert、私はそれを選択し、Web ページに正常にアクセスします。別の証明書を選択すると、サーバーからエラー ページが表示されます。

私の問題: 証明書選択ダイアログが表示されると、serv2Cert と people1Cert (?) の 2 つの証明書が表示されます。どちらも私をウェブページに行かせてくれました!SSLVerifyDepth または trust_ca.pem を変更してクライアント証明書を serv2Cert のみに制限すると、unknown caまたはunknown certificateなどの SSL エラーが発生します

1、2、3、4 などの SSLVerifyDepth 値をいくつか試しました。サーバーにログインできるのは「3」だけです。trust_ca.pem から ROOT 以外のすべての CA 証明書を削除すると、両方のクライアント証明書 (people1Cert と serv2Cert) でログインできるようになります。

これについての助けに感謝します。下手な英語で申し訳ありませんが、事前に感謝します。よろしくお願いします。

4

1 に答える 1

2

Tomcat ではこれを行うことはできません。SSLについては非常に柔軟性がありません。単一の Web アプリではなく、Tomcat コンテナー全体を構成していることに注意してください。Tomcat の前に、つまりリバース プロキシとして Apache HTTP を配置することをお勧めします。Apache HTTPD を使用すると、個々のディレクトリのレベルに至るまで、受け入れ可能なクライアント ID を含め、SSL のあらゆる側面を構成できます。

于 2012-06-14T22:00:07.723 に答える