我们在我们的项目中有客户的证书认证
然而,由于某种原因,在发布100 Tomcat之后,似乎什么都不能工作
当我们通过nginx代理应用程序时,我们要么得到400 HTTP响应,要么证书头为空(如果我们设置了rejectIllegalHeader="false"
示例(标头的值),name - ssl_client_cert
"-----BEGIN CERTIFICATE-----\x0A\x09MIIFXDCCA0SgAwIBAgIBBDANBgkqhkiG9w0BAQsFADBHMQ...
\x0A\x09-----END CERTIFICATE-----"或ssl_client_raw_cert
"-----BEGIN CERTIFICATE-----\x0AMIIFXDCCA0SgAwIBAgIBBDANBgkqhkiG9w0BAQsFADBHMQsw ...
y2EmDsw=\x0A-----END CERTIFICATE-----\x0A"我想这就是罪魁祸首
在第100个版本之前,一切运行正常
为了绕过这一点,我们改用ssl_client_escaped_cert。
"-----BEGIN%20CERTIFICATE-----%0AMIIFXDCCA0SgAwIBAgIBBDANBgkqhkiG9 ...
qgt0Tzy2EmDsw%3D%0A-----END%20CERTIFICATE-----%0A"现在,我们必须在Java代码中手动取消转义
String certificateInfo = URLDecoder.decode(request.getHeader(headerName), "UTF-8");有没有办法让Tomcat接受100版或更高版本的非转义证书?
发布于 2020-11-19 23:17:18
不,您无法将Tomcat配置为允许包含0x0A以外的HTTP标头值。这些更改是为了响应CVE-2020-1935。
另外,我假设Nginx正在执行客户端身份验证,并将经过验证的客户端证书传递给Tomcat。
https://stackoverflow.com/questions/64911070
复制相似问题