gpt4 book ai didi

Node.js 在移动设备上使用 SSL 通配符中断

转载 作者:搜寻专家 更新时间:2023-10-31 23:39:22 24 4
gpt4 key购买 nike

我有一个使用 SSL 在 sub.domain.com 上运行的 Node.js 服务器。它在桌面浏览器上运行了几个月,但我只是注意到它在移动浏览器上不起作用。

我做了一些研究,很多人认为我的证书链有问题。我已经更改了我的代码,看起来好像有,但仍然没有运气。

这是我的代码:

var httpsOptions = {
ca: [fs.readFileSync("certrequest.csr")],
key: fs.readFileSync("privatekey.pem"),
cert: fs.readFileSync("certificate.pem")
};

var app = http.createServer(httpsOptions, function(req, res) {
log.cnsl.write("HTTP Request received from " + req.connection.remoteAddress);
//Do stuff
});

我正在运行此命令以查看一些调试信息(我的服务器在端口 5673 上运行):

openssl s_client -connect sub.domain.com:5673 -showcerts | grep "^ "

下面是输出的重要部分

depth=0 O = *.domain.com, OU = Domain Control Validated, CN = *.domain.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 O = *.domain.com, OU = Domain Control Validated, CN = *.domain.com
verify error:num=27:certificate not trusted
verify return:1
depth=0 O = *.domain.com, OU = Domain Control Validated, CN = *domain.com
verify error:num=21:unable to verify the first certificate
verify return:1

最佳答案

您将证书请求文件“certrequest.csr”作为 CA 听起来很奇怪。

CA 字段应包含从您的个人证书到根证书的证书链。在我的配置中,它包含 2 个条目。一个作为根证书本身,第二个作为中间证书,因为我的颁发者提供了多个级别的证书。

顺便说一下,您的认证公司肯定会在他们的常见问题解答中为您提供此类信息。

例如,这是我的配置的摘录:

var httpsOptions = {
key:fs.readFileSync('/etc/ssl/private/ssl-main.key'),
cert:fs.readFileSync('/etc/ssl/private/ssl-main.crt'),
ca:[fs.readFileSync('/etc/ssl/private/ca.pem'),
fs.readFileSync('/etc/ssl/private/sub.class2.server.ca.pem')]
};

无论如何,这并不能解释为什么它适用于非移动浏览器。我唯一的猜测是,它们可能会将自己嵌入链的一部分,而移动设备不会因为磁盘空间原因而不会。

希望这对您有所帮助。

关于Node.js 在移动设备上使用 SSL 通配符中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11497151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com