gpt4 book ai didi

node.js 我可以为同一个项目使用多个 ssl 证书和 key 吗?如何使用?

转载 作者:搜寻专家 更新时间:2023-11-01 00:47:32 29 4
gpt4 key购买 nike

我有我的 paypal ssl certificate对于像这样为我的代码添加的 paypal ipn,它可以正常工作

var httpsOptions = {
key: fs.readFileSync('./app/certsandkeys/my-prvkey.pem'),
cert: fs.readFileSync('./app/certsandkeys/my-pubcert.pem'),
requestCert: true
//pfx: fs.readFileSync('./app/certsandkeys/ssl/crt.pfx'),
//passphrase:"password"
}

https.createServer(httpsOptions, app).listen(443,function (req,res) {
console.log("server listening on port " + 443);
});

但我现在需要的是对我的整个站点进行认证,所以我使用 openssl(server.crt 和 server.csr 和 server.key)创建了一个 ssl 证书和 key ,但现在我不知道如何将它添加到httpsOptions 上的 paypal ipn 证书和 key

我唯一找到的类似的东西是来自 github issues 的代码

var options = {
key: [key1, key2],
cert: [cert1, cert2],
ca: caCert
};
var server = https.createServer(options);

那么这样做的正确方法是什么?

最佳答案

在同一台服务器上使用不同的 key 由服务器名称指示 (SNI) 处理,并且不同的服务器需要不同的域名。 This question展示了如何使用 SNI 为第二个域名创建不同的安全上下文。

在默认上下文中更改键的代码应该如下所示:

const secondContext = tls.createSecureContext({
key: [key2],
cert: [cert2]
});


const options = {
key: [key1],
cert: [cert1],
SNICallback: function (domain, cb) {
if (domain === 'key2domain.example.com') {
cb(null, secondContext);
} else {
cb();
}
}
}

从您提到的 paypal 文档中不清楚 paypal 是否让您为此 IPN 服务 URL 设置备用域。相反,他们的流程似乎接受 CSR 来处理仅供 IPN 使用的自签名证书,并提供付费签名以将其用于用户可见按钮,即他们提供自己的 CA 服务?

您可以在同一个 key 上提交多个 CSR,这样您就可以尝试依靠单个私钥并保留来自普通 CA 的证书链。但是,如果他们强制使用自己的证书链,那么您可能需要为此用途创建一个单独的(子)域,以便为不同的链提供 SNI。

关于node.js 我可以为同一个项目使用多个 ssl 证书和 key 吗?如何使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57539570/

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