[英]Unable to properly utilize client-side SNI across my system
這個問題與我的另一個問題密切相關: Python `urllib3`:突然的“證書驗證失敗:證書已過期”錯誤。
出於某種原因,我為 SNI 提供正確主機名的嘗試似乎沒有成功。 這首先體現在鏈接問題的代理中,因為如果沒有正常工作的 SNI,它就無法成功驗證證書。 然后,當我使用安裝 OpenSSL(與 Python 和系統分開)調試問題時,它也顯示相同的標志。 我決定使用此腳本查看至少 Node.js 是否與 SNI 正確配合,但沒有運氣:
fs = require('fs/promises');
tls = require('tls');
const [,, host, port, file] = process.argv;
const socket = tls.connect({
host, port,
servername: host,
rejectUnauthorized: false,
}, async () => {
const cert = socket.getPeerCertificate(false);
result = tls.checkServerIdentity(host, cert) ? 'No.' : 'Yes.';
console.log('Valid for', cert.subjectaltname + '?', result);
//await fs.writeFile(file, cert.raw)
socket.destroy()
});
我認為這個 output 很好地展示了這個問題:
> node .\sni-helper.js i.stack.imgur.com 443 test.tmp
Valid for DNS:*.imgur.com, DNS:imgur.com? No.
許多其他主機名似乎也沒有正確反映在提供的證書中。
我的配置:
其他人有這個問題嗎? 除了可能在 OpenSSL 存儲庫中提交問題外,我不知道 go 的位置在哪里,但我可能只是無法正確設置我的客戶而忽略了一些明顯的事情,所以我想先和你們核實一下。
原來 NetLimiter 4 是罪魁禍首。 在排除原因時,我最初確實懷疑它,但問題持續了一段時間,我關閉了系統服務,所以我認為它一定是別的東西。 但我當時不知道它還安裝了一個獨立於服務工作的驅動程序。 一旦我意識到(誠然花了我很長時間)我完全卸載了該程序,現在問題就消失了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.