【发布时间】:2013-01-20 22:47:31
【问题描述】:
我正在尝试将 x509 客户端证书(我的浏览器上安装了一个测试证书)从 Apache Web 服务器 (SSL) 传递到 Tomcat 应用程序。我现在配置它的方式,应用程序的弹簧安全没有找到(因此没有转发)证书。
DEBUG: [http-8080-1] org.springframework.security.web.authentication.preauth.x509.X509AuthenticationFilter - No client certificate found in request.
Apache服务器ssl.conf文件是这样配置的(不相关的部分我省略了):
LoadModule ssl_module modules/mod_ssl.so
Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
NameVirtualHost *:443
<VirtualHost *:443>
...
SSLVerifyClient require
SSLVerifyDepth 2
...
# initialize the SSL headers to a blank value to avoid http header forgeries
RequestHeader set SSL_CLIENT_CERT ""
RequestHeader set SSL_CLIENT_VERIFY ""
# add whatever SSL_* variables needed to pass to web application
RequestHeader set SSL_CLIENT_CERT "%{SSL_CLIENT_CERT}s"
RequestHeader set SSL_CLIENT_VERIFY "%{SSL_CLIENT_VERIFY}s"
RequestHeader add X-Forwarded-Scheme https
ProxyPass /testcert http://127.0.0.1:8080/testcert
ProxyPassReverse /testcert http://127.0.0.1:8080/testcert
</VirtualHost>
有没有办法在 Apache 中配置这个,整个证书被转发到 Tomcat 服务器?我知道我可以使用ajp,但我试图在没有这种方法的情况下完成它。
【问题讨论】:
-
你是说你所拥有的东西不起作用 - 你在 tomcat 中看不到 SSL_CLIENT_CERT 标头吗?
-
@Luke 我看到了标题,根据documentation,
SSL_CLIENT_CERT是“PEM 编码的客户端证书”,但它没有在 Tomcat 服务器上通过。 Spring security 说它没有收到证书。
标签: apache tomcat spring-security x509