java—7.0.100中tomcat中的客户端证书身份验证问题+

tkqqtvp1  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(416)

在我们的项目中我们有客户的证书认证
然而,由于某种原因,在100个tomcat发布之后,似乎什么都不起作用
我们得到任何一个 400 HTTP 响应或证书头为空(如果我们设置 rejectIllegalHeader="false" )当我们通过 nginx 示例(标题值),名称- ssl_client_cert :

"-----BEGIN CERTIFICATE-----\x0A\x09MIIFXDCCA0SgAwIBAgIBBDANBgkqhkiG9w0BAQsFADBHMQ...
\x0A\x09-----END CERTIFICATE-----"

或者 ssl_client_raw_cert ```
"-----BEGIN CERTIFICATE-----\x0AMIIFXDCCA0SgAwIBAgIBBDANBgkqhkiG9w0BAQsFADBHMQsw ...
y2EmDsw=\x0A-----END CERTIFICATE-----\x0A"

我想这是罪魁祸首
https://github.com/apache/tomcat/commit/ae8c82eff96990878e79691819ae941538ee62fd#diff-d4454b2c33deae44a2c2f5cd354aa3ca70c6a268e78c4fd5e1f76fcebc0181ba型
在第100版之前,一切正常
绕过我们使用的 `ssl_client_escaped_cert` 相反。

"-----BEGIN%20CERTIFICATE-----%0AMIIFXDCCA0SgAwIBAgIBBDANBgkqhkiG9 ...
qgt0Tzy2EmDsw%3D%0A-----END%20CERTIFICATE-----%0A"

现在我们必须在java代码中手动取消它的scape

String certificateInfo = URLDecoder.decode(request.getHeader(headerName), "UTF-8");

有没有办法让tomcat接受第100版或更高版本的非转义证书?
xkftehaa

xkftehaa1#

不,不能将tomcat配置为允许http头值大于0x0a。这些变化是对cve-2020-1935的回应。
另一方面,我假设nginx正在执行客户端身份验证,并将经过验证的客户端证书传递给tomcat。

相关问题