我正在使用Spring Security for X.509 preauthentication
。
要确保客户端按HTTP请求发送证书,是否有必要:
<wantClientAuth>
和<needClientAuth>
设置为true
SSLVerifyClient
设置为require
reference 根据阅读,Web服务器必须告诉客户端发送其证书,以便客户端实际发送它。如果需要Spring Security和Apache配置来实现这一点,我感到很困惑。
答案 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属性名称。