所以我在tomcat上运行了一个spring-boot应用程序。现在我有一个用于提供双向SSL身份验证的apache代理。验证后,应用程序不会获取apache set证书。代理工作正常,因为其他应用程序确实选择了标题。
<Location "/app/secure">
SSLRequireSSL
SSLVerifyClient optional
SSLVerifyDepth 3
SSLOptions +ExportCertData +StdEnvVars
</Location>
RequestHeader set SSL_CLIENT_S_DN_CN "%{SSL_CLIENT_S_DN_CN}s" env=SSL_CLIENT_S_DN_CN
many header here...
ProxyPass /app http://mylocalip:8080
ProxyPassReverse /app http://mylocalip:8080
我已经设置了
server.use-forward-headers=true
我尝试按如下方式阅读标题
@RequestMapping(value="/auth", method = RequestMethod.POST)
public String auth(HttpServletRequest request) {
String client = null;
String verify = request.getHeader("SSL_CLIENT_VERIFY");
String cert = request.getHeader("SSL_CLIENT_S_DN_CN")
return cert;
}
在'/app/secure.html'正文加载时调用发布到'/ auth'。
修改 似乎不是tomcat的问题。切换它为码头,问题仍然存在。因此,spring-boot不会转发标头,或者我要求它们出错。