2012-11-06 34 views
2

我已經成功地在客戶端應用程序和Tomcat實例之間設置了相互SSL。但是,我現在正在尋找一種方法,通過相互SSL僅公開部署在Tomcat中的部分服務。儘管看起來可以使用APR配置(通過將「SSLVerifyClient」屬性的值定義爲「可選」),但我似乎無法找到與Tomcat中的JSSE實現SSL相同的方法。感謝任何關於如何完成這些任務的意見。在Tomcat中爲每項服務啓用雙向SSL

乾杯, Prabath

+0

你有沒有考慮閱讀該連接器的Tomcat文檔? – EJP

回答

3

(注意SSLVerifyClient="optional"與APR相當於clientAuth="want"與JSSE連接器。儘管是可選的,這是在連接時協商,而不是重新協商一旦路徑是由服務器已知的。 )

如果您只想對某些Web應用程序(或路徑)使用客戶端證書身份驗證,則需要使用信任庫配置連接器,但請保留clientAuth="false"

然後,在您的WEB-INF/web.xml中,您需要配置CLIENT-CERT驗證。這將使用重新協商在必要時要求客戶證書。配置是這樣的:

<web-app> 
    <display-name>My Webapp</display-name> 
    <security-constraint> 
     <web-resource-collection> 
      <web-resource-name>App</web-resource-name> 
      <url-pattern>/</url-pattern> 
     </web-resource-collection> 
     <auth-constraint> 
      <role-name>cert</role-name> 
     </auth-constraint> 
     <user-data-constraint> 
      <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
     </user-data-constraint> 
    </security-constraint> 

    <login-config> 
     <auth-method>CLIENT-CERT</auth-method> 
    </login-config> 

    <security-role> 
     <role-name>cert</role-name> 
    </security-role> 
</web-app> 

(你想也需要用戶的主題的DN映射到相應的角色,配置Tomcat用戶時。)

+0

嗨布魯諾,這正是我需要的。感謝非常豐富的答案! –

相關問題