2012-06-14 52 views
3

這是我在這個論壇的第一個問題,請提前接受我對任何錯誤的道歉。 我在使用SSL和APR配置tomcat時遇到問題。tomcat ssl apr x509

上下文: 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 PC客戶端在Windows密鑰庫(Windows的MY):people1Cert和serv2Cert

trust.pem include ROOT,CA_int中間,CA4Servers和tomcat pem編碼的公鑰。 trust_ca.pem all of trust.pem but tomcat cert。

我想要什麼: 轉到https://tomcat.server:8443/,瀏覽器會顯示我一個證書的證書選擇對話框:serv2Cert,我選擇它,進入網頁成功地。如果我選擇另一個證書,服務器會給我一個錯誤頁面。

我的問題: 當我拿到證書選擇器對話框時,我看到兩個證書:serv2Cert和people1Cert(?)。他們都讓我去網頁! 如果我改變SSLVerifyDepth或trust_ca.pem到客戶端證書限制爲僅serv2Cert,我得到這樣未知CA未知的證書

我已經與一些SSLVerifyDepth值試圖像1,2 SSL錯誤, 3,4。只有「3」才能讓我登錄到服務器。如果我從trust_ca.pem中刪除了所有CA證書,但刪除了ROOT,則讓我使用兩個客戶端證書(people1Cert和serv2Cert)進行登錄。

我會對此有所幫助,對不起我的可憐的英語,提前謝謝你。最好的祝福。

回答

2

你不能用Tomcat來做到這一點。 SSL非常不靈活。請注意,您正在配置整個Tomcat容器,而不是單個Web應用程序。我建議你將Apache HTTP放在Tomcat前面,即作爲反向代理。 Apache HTTPD允許您配置SSL的每個方面,包括可接受的客戶端身份,直至各個目錄的級別。