Servlets 每个webapp模块的weblogic客户端证书身份验证

Servlets 每个webapp模块的weblogic客户端证书身份验证,servlets,ssl,web-applications,weblogic,client-certificates,Servlets,Ssl,Web Applications,Weblogic,Client Certificates,我使用的是WebLogic12c 我想设置客户端证书身份验证(双向SSL)。但我不想对整个服务器强制执行客户端证书。基本上,在我们的webapp中,大多数servlet应该使用常规的单向SSL(只验证服务器证书),而不需要客户端提供证书。但对于其中一个servlet,需要客户端证书身份验证 我已经为Glassfish设置了类似的东西,为servlet使用单独的模块,其中web.xml部署描述符需要双向SSL,login config元素指示客户端证书身份验证类型。我还设置了适当的安全约束、角色和

我使用的是WebLogic12c

我想设置客户端证书身份验证(双向SSL)。但我不想对整个服务器强制执行客户端证书。基本上,在我们的webapp中,大多数servlet应该使用常规的单向SSL(只验证服务器证书),而不需要客户端提供证书。但对于其中一个servlet,需要客户端证书身份验证

我已经为Glassfish设置了类似的东西,为servlet使用单独的模块,其中web.xml部署描述符需要双向SSL,login config元素指示客户端证书身份验证类型。我还设置了适当的安全约束、角色和组

然而,这似乎不适用于Weblogic。在SSL下的管理控制台中,我看到“双向客户端证书行为”,其中有3个可能的值:“未请求客户端证书”、“已请求但未强制”和“已请求并强制”

如果我将其设置为“not requested”,则客户端根本不提供任何证书(即使我使用与Glassfish相同的web.xml和client-CERT)。设置为“请求并强制”不是一个选项。我还尝试设置为“已请求但未强制”,但这也很糟糕,因为浏览器会要求客户端证书,即使是那些不需要客户端证书的页面(大多数页面),我们也不希望出现这种行为

基本上,在我看来,Weblogic希望对整个服务器实施双向SSL,但这不是我们需要的,我们只需要一个webapp模块。有可能吗

编辑:
为了澄清这一点,我设置了DefaultIdentityAssert,并创建了自定义用户名映射器,以将客户端证书映射到用户名。但问题是,如果SSL设置(如上所述)设置为“未请求”,则根本不提供客户端证书,因此服务器无法进行身份验证,我将得到401响应。我不能使用其他2个SSL设置,因为服务器将要求所有网页的客户端证书,而这不是我们想要的。

根据您的特定需要,我将创建2个托管服务器,只设置一个具有2路SSL的服务器。 然后,您可以将应用程序部署到相应的托管服务器上,具体取决于您是否需要双向SSL


然后,您需要在WebLogic服务器前面添加一个反向代理,以便将用户转发到正确的端口,因为您可能不想公开多个端口。

根据您的特定需要,我将创建两个托管服务器,只设置一个具有双向SSL的服务器。 然后,您可以将应用程序部署到相应的托管服务器上,具体取决于您是否需要双向SSL


然后,您需要在WebLogic服务器前面添加反向代理,以便将用户转发到正确的端口,因为您可能不想公开多个端口。

您可以创建两个网络通道。请参阅WLST中的NetworkAccessPointMBean,或管理控制台中的Environment/Servers/yourServer/Protocols/Channel

  • 通道1:在特定端口上启用SSL,带单向SSL
  • 通道2:在特定端口上启用SSL并强制执行双向SSL和客户端证书
然后,根据客户证书要求,在适当的端口上访问web模块


这只需要一台服务器。

您可以创建两个网络通道。请参阅WLST中的NetworkAccessPointMBean,或管理控制台中的Environment/Servers/yourServer/Protocols/Channel

  • 通道1:在特定端口上启用SSL,带单向SSL
  • 通道2:在特定端口上启用SSL并强制执行双向SSL和客户端证书
然后,根据客户证书要求,在适当的端口上访问web模块


这只需要一台服务器。

谢谢您的回答。是的,那会管用的,但我希望只用一台服务器就可以完成。就我所想,在web.xml(带有CLIENT-CERT)中使用login-config元素将在每个应用程序(或每个应用程序模块)的基础上启用客户端证书。我想这是通过ssl重新协商完成的。不确定为什么它不能与weblogic一起工作(我尝试指定-Dweblogic.security.ssl.enable.renegotiation=true选项,但没有任何效果)。如果从不需要任何身份验证的webapp的web.xml中删除安全约束,会发生什么?我相信您可以在配置为双向SSL的服务器上部署一个没有安全约束的应用程序。。。但不确定,我们放弃了客户端证书,正如您所看到的那样太复杂了:/实际上,我们的应用程序中不需要客户端证书的部分在其web.xml中没有安全约束。但是,如果我在服务器级别指定双向SSL(通过指定“requested and exforced”),它不会阻止一切,因为它会在没有证书时向客户机请求证书吗?我当然可以试试。看起来拥有2台托管服务器是WebLogic的唯一方法。谢谢你的回答。是的,那会管用的,但我希望只用一台服务器就可以完成。就我所想,在web.xml(带有CLIENT-CERT)中使用login-config元素将在每个应用程序(或每个应用程序模块)的基础上启用客户端证书。我想这是通过ssl重新协商完成的。不确定为什么它不能与weblogic一起工作(我尝试指定-Dweblogic.security.ssl.enable.renegotiation=true选项,但没有任何效果)。如果从不需要任何身份验证的webapp的web.xml中删除安全约束,会发生什么?我相信您可以在配置为双向SSL的服务器上部署一个没有安全约束的应用程序。。。但不确定,我们放弃了客户端证书,正如您所看到的那样太复杂了:/实际上,我们的应用程序中不需要客户端证书的部分在其web.xml中没有安全约束。但是如果我在服务器级别指定双向SSL(通过指定“请求并强制”),那么