1

我正在将 Spring Security 用于X.509 preauthentication.

为确保客户端根据 HTTP 请求发送其证书,是否有必要:

  • 修改 pom.xml 以设置<wantClientAuth><needClientAuth>true
  • 设置 ApacheSSLVerifyClientrequire 引用

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

4

1 回答 1

4

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

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

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

于 2013-05-13T13:02:21.263 回答