我已經成功地在客戶端應用程序和Tomcat實例之間設置了相互SSL。但是,我現在正在尋找一種方法,通過相互SSL僅公開部署在Tomcat中的部分服務。儘管看起來可以使用APR配置(通過將「SSLVerifyClient」屬性的值定義爲「可選」),但我似乎無法找到與Tomcat中的JSSE實現SSL相同的方法。感謝任何關於如何完成這些任務的意見。在Tomcat中爲每項服務啓用雙向SSL
乾杯, Prabath
我已經成功地在客戶端應用程序和Tomcat實例之間設置了相互SSL。但是,我現在正在尋找一種方法,通過相互SSL僅公開部署在Tomcat中的部分服務。儘管看起來可以使用APR配置(通過將「SSLVerifyClient」屬性的值定義爲「可選」),但我似乎無法找到與Tomcat中的JSSE實現SSL相同的方法。感謝任何關於如何完成這些任務的意見。在Tomcat中爲每項服務啓用雙向SSL
乾杯, Prabath
(注意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用戶時。)
嗨布魯諾,這正是我需要的。感謝非常豐富的答案! –
你有沒有考慮閱讀該連接器的Tomcat文檔? – EJP