簡體   English   中英

Tomcat 7.0.100+客戶端證書認證問題

[英]Client's certificate authentication issue in Tomcat in 7.0.100+

我們的項目中有客戶的證書認證

但是,由於某種原因,在 100 個 Tomcat 發布后似乎沒有任何效果

當我們通過nginx代理到應用程序時,我們得到400 HTTP響應或證書標頭為空(如果我們設置rejectIllegalHeader="false"

示例(標頭的值),名稱 - 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-d4454b2c33deae44a2c2f5cd354aa3ca70c6a268e78c4fd58e78c4fd5e1b

在第 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 個版本及更高版本的非轉義證書?

不,您無法將 Tomcat 配置為允許包含 0x0A 的 HTTP 標頭值。 這些更改是針對CVE-2020-1935 做出的

順便說一句,我假設 Nginx 正在執行客戶端身份驗證並將經過驗證的客戶端證書傳遞給 Tomcat。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM