JBOSS 7有两个上下文。 一个使用SSL Mutual Auth,另一个只使用SSL

我们在配置JBoss时遇到问题。 我们正在配置它,以便可以同时使用Mutual auth并且不使用它。 喜欢:

https://example.com/contextA/ (需要SSL相互身份validation) https://example.com/contextB/ (只需SSL)

可能吗?

我能做的是使JBoss或所有JBoss使用SSL相互认证或不使用。 如何将其配置为同时进行?

我的contextA web.xml:

  ContextA   services /* GET   *   CONFIDENTIAL    CLIENT-CERT      

我的contextA jboss-web.xml

   RequireCertificateDomain  

ContextB web.xml

   ContextB   *.jsp true    10  true    index.jsp   SecureApplicationConstraint  ContextB Auth applications are secured /login/*   Only Users with roles are allowed USER   CONFIDENTIAL    SecureChannelConstraint  Entire site is protected through SSL  /contextB/*   Require encrypted channel CONFIDENTIAL    FORM ContextBPolicy  /login.jsp /loginError.jsp     USER   

ContextB jboss-web.xml

   java:/jaas/ContextBPolicy  

standalone.xml的内容

      (...)            (...)              

在我看来,基于http端点不可能做到这一点。

原因是在客户端将http请求发送到服务器之前发生SSL / TLS握手。

端点(例如/contextA )驻留在该http请求中!

在SSL / TLS握手开始时,只有主机名(例如example.com )可用(并且仅当客户端启用了SNI时)。

所以你需要2个不同的主机名。 例如contexta.example.comcontextb.example.com

有可能,因为您要为不同的Web应用程序配置不同类型的身份validation。

请修改want verify-client的值:

    

添加

根据与verify-client属性相关的JBoss文档: http : //docs.jboss.org/jbossweb/7.0.x/config/ssl.html

如果希望SSL堆栈在接受连接之前需要来自客户端的有效证书链,请设置为"true" 如果希望SSL堆栈请求客户端证书,则设置为"want" ,但如果未显示,则不会失败。

如果verify-client=”true” JBoss需要证书是正确的。 但是,如果您在verify-client="want"时访问证书,JBOSS应该要求客户端证书。 如果兄弟包含客户端证书并且应用程序受客户端证书身份validation(web.xml中的CLIENT-CERT)保护,则应该成功。

您可以通过定义需要证书的领域来执行此操作:

      

然后将WebApplication放入该领域:

在WEB-INF / web.xml中:

  CLIENT-CERT CertRequiredRealm