gpt4 book ai didi

windows - 如何配置在 Windows 上运行的 node.js 使用多个域名的多个 SSL 证书?

转载 作者:可可西里 更新时间:2023-11-01 13:40:41 25 4
gpt4 key购买 nike

我已经通读了这个问答:“ Is it Possible to Dynamically Return an SSL Certificate in NodeJS? “...但它为域和服务器使用 .key 和 .crt 文件。

在 Windows 2008 R2 机器上,我找不到 domain1.key、server.key 和 server.crt 文件。相反,我通过从 IIS 导出 SSL 证书创建了一个 domain1.pfx 文件。

我能够使用这个具有一个域的 PFX 文件成功运行 https node.js 服务器:

var fs = require('fs');
var https = require('https');
var crypto = require('crypto');

function getSecureContext(domain) {
return crypto.createCredentials({
pfx: fs.readFileSync('/path/to/' + domain + '.pfx'),
passphrase: 'passphrase'
}).context
}
var secureContext = {
'domain1': getSecureContext('domain1')
}
var options = {
SNICallback: function (domain) {
return (secureContext.hasOwnProperty(domain) ? secureContext[domain] : {});
},
pfx: fs.readFileSync('/path/to/domain1.pfx'); // for the server certificate
};
var server = https.createServer(
options,
requestListener).listen(443);

但是,如果我有一个多域证书和另一个用于单个域的证书,如何配置 SNICallback 和 getSecureContext 函数以使每个域名使用正确的证书?

我认为两个 PFX 文件的服务器证书应该相同,因为它们在同一台服务器上,所以我只使用第一个 PFX 文件(对于 domain1)作为服务器证书。

我试过像这样更改 secureContext 对象:

var secureContext = {
'domain1': getSecureContext('domain1'),
'domain2': getSecureContext('domain2'),
.
.
}

这给了我错误“listen EACCES”。

在我的具体情况下,我有两个 SSL 证书。一种是一个域名的扩展验证证书,一种是支持五个域名的多域证书。

我发现调试 EACCES 错误非常困难。似乎没有关于导致 EACCES 的原因的更多详细信息。我的配置有问题吗,证书有问题吗?当我在同一台 Windows 2008 R2 服务器上运行 IIS 服务器(而不是 node.js 服务器)的 IIS 中使用这些证书时,我确实知道这些证书可以正常工作。

我想继续使用纯 Windows 和 node.js 配置。 (如果可能,不要使用 nginx、iisnode 或任何其他库)。

最佳答案

解决了。 EACCES 错误是由于我没有列出所有需要使用这两个证书的站点。由于我正在测试,我只使用了两个站点名称,但多域证书包括一些其他站点。每个站点都需要如下列出。否则,一个或多个站点将没有与其关联的证书,从而导致 EACCES 错误。

var secureContext = {
'domain1': getSecureContext('domain1'),
'domain2': getSecureContext('domain2'),
'domain3': getSecureContext('domain2'),
'domain4': getSecureCOntext('domain2')
}

关于windows - 如何配置在 Windows 上运行的 node.js 使用多个域名的多个 SSL 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28005335/

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