gpt4 book ai didi

node.js - 如何在 node.js 中使用非 CA SSL 证书作为根证书?

转载 作者:太空宇宙 更新时间:2023-11-03 13:38:09 24 4
gpt4 key购买 nike

所以我想在 node.js 的 TLS 连接中使用非 CA 证书作为根证书。然而,该证书似乎总是被视为 CA。

我正在生成根证书

openssl req -new -nodes -subj "/CN=ClientName1" -keyout client-key.pem -out client-csr.pem
openssl x509 -req -signkey client-key.pem -in client-csr.pem -out client-cert.pem -extfile v3.ext

(类似于服务器)

和这样的测试证书

openssl req -new -nodes -subj "/CN=ClientName2" -keyout client-key2.pem -out client-csr2.pem
openssl x509 -req -in client-csr2.pem -out client-cert2.pem -extfile v3.ext -CA client-cert.pem -CAkey client-key.pem -CAcreateserial

v3.ext 是

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE

现在服务器接受 client-cert 和 client-cert2,但是如果我生成由 client-cert2 签名的第三个 (client-cert3),服务器不接受它。因此,无论如何,根证书似乎都被视为 CA。有没有一种方法可以避免故意生成一次性虚拟根证书,该证书仅用于签署一个客户端证书?

我是这样使用它的:

var options = {
key: fs.readFileSync('server-key.pem'),
cert: fs.readFileSync('server-cert.pem'),

requestCert: true,
rejectUnauthorized: true,

ca: [fs.readFileSync('client-cert.pem')],

port: 15151
};

var server = tls.createServer(options, function (socket) {});

附言此外,在测试以 root 身份使用 client-cert2.pem 时,服务器不接受使用 client-cert2、client-cert3 或 client-cert 的客户端。

最佳答案

任何用于签署另一个证书的东西都必须有适当的 key 使用限制。如果使用限制不允许证书用作 CA,则您无法绕过它,因为证书链的验证是由客户端而不是服务器完成的。

关于node.js - 如何在 node.js 中使用非 CA SSL 证书作为根证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33199253/

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