我已经阅读了这个问题并回答:“
Is it Possible to Dynamically Return an SSL Certificate in NodeJS?“…但它使用域和服务器的.key和.crt文件.
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文件.
我能够成功运行一个https node.js服务器,使用这个一个PFX文件和一个域,如下所示:
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'),. . }
这给了我错误“听EACCES”.
在我的具体情况下,我有两个SSL证书.一个是一个域名的扩展验证证书,第二个是支持五个域名的多域证书.
我发现调试EACCES错误非常困难.关于导致EACCES的原因似乎没有更详细的说明.我的配置错了,证书有问题吗?我知道当我在同一台Windows 2008 R2服务器上运行IIS服务器(而不是node.js服务器)的IIS中使用它们时,这些证书可以正常工作.
我想继续使用纯Windows和node.js配置. (如果可能,不是Nginx,iisnode或任何其他库).