簡體   English   中英

無法在我的系統中正確利用客戶端 SNI

[英]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.

許多其他主機名似乎也沒有正確反映在提供的證書中。

我的配置:

  • Windows 10 x64 在撰寫本文時完全是最新的。
  • Python 3.9.1。
  • Node.js v15.5.1。
  • OpenSSL 1.1.1i 2020 年 12 月 8 日。

其他人有這個問題嗎? 除了可能在 OpenSSL 存儲庫中提交問題外,我不知道 go 的位置在哪里,但我可能只是無法正確設置我的客戶而忽略了一些明顯的事情,所以我想先和你們核實一下。

原來 NetLimiter 4 是罪魁禍首。 在排除原因時,我最初確實懷疑它,但問題持續了一段時間,我關閉了系統服務,所以我認為它一定是別的東西。 但我當時不知道它還安裝了一個獨立於服務工作的驅動程序。 一旦我意識到(誠然花了我很長時間)我完全卸載了該程序,現在問題就消失了。

暫無
暫無

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

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