将X509证书放入HTTP请求中

时间:2013-05-12 18:48:54

标签: apache spring-security certificate

我正在使用Spring Security for X.509 preauthentication

要确保客户端按HTTP请求发送证书,是否有必要:

  • 修改pom.xml以将<wantClientAuth><needClientAuth>设置为true
  • 将Apache的SSLVerifyClient设置为require reference

根据阅读,Web服务器必须告诉客户端发送其证书,以便客户端实际发送它。如果需要Spring Security和Apache配置来实现这一点,我感到很困惑。

1 个答案:

答案 0 :(得分:2)

Spring Security配置与客户端是否发送证书无关。这是由SSL协议级别决定的,因此也是客户端和服务器之间的协商决定的。您的问题有点不清楚,它指的是maven pom和Apache配置,但没有解释您的系统是如何设置的。您是否正在使用Apache服务器运行maven Jetty插件?

如果SSL连接未在servlet容器上终止,则Spring Security的X.509身份验证将不起作用。因此,如果客户端和Apache之间存在HTTPS,并且从Apache到servlet容器之间存在非SSL连接,则客户端证书通常不可用。

如果您使用的是AJP连接器,则可以使用ExportCertData选项将Apache配置为将证书传递到后端。如果不是,您仍然可以获取导出的证书并将其作为请求标头传递(您可以在其他地方找到SO的示例)。您还需要自定义Spring Security X.509代码以从标头中提取证书,而不是默认使用的标准java属性名称。