![](/img/trans.png)
[英]Tomcat Application to WCF Service with Client Certificate Authentication
[英]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"
我想這是罪魁禍首
在第 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.