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