2015-10-19 54 views
1

我不确定如何传入给定证书以启动https服务器。 Entrust提供了以下文件:
1.根证书。 (.txt)
2.链接根证书文件。 (.txt)
3.链式证书。 (.txt)
4.服务器证书。 (.CRT)在Node express应用程序中安装Entrust SSL证书

我的快递应用目前需要:

exports.key1 = { 
    key:'./server/config/keys/server.key', // ? 
    cert:'./server/config/keys/server.crt', // ? 
    ca:'./server/config/keys/ca.csr' //given to entrust to generate their cert 
}; 

我不知道如何修改密钥相匹配的新文件。

回答

1

一旦您连接了您的证书,您的证书的说明由您的发行人提供,您需要从文件系统中读取它们并将其提供给http.createServer()以创建SSL服务器对象。从文档:

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

var options = { 
    key: fs.readFileSync('path/to/agent-key.pem'), 
    cert: fs.readFileSync('path/to/agent-cert.pem') 
}; 

https.createServer(options, function (req, res) { 
    res.writeHead(200); 
    res.end("hello world\n"); 
}).listen(8000); 

通常,你会将选项块封装在一个标志来检查你是否在生产或开发。对于生产,您将从安全的预定义路径中读取证书,而在开发时,您可以生成这些证书并将其提供到根项目文件夹fixtures/中,如果它更方便,也可以与项目存储库一起分发。使用以下来创建一个自行发行的证书进行开发:

openssl req -batch \ 
    -new -x509 -sha256 -newkey rsa:2048 -nodes -days 365 \ 
     -keyout fixtures/dev.key \ 
     -out fixtures/dev.crt; 
+0

所以... agent-key是我的私钥吗? agent-cert是1个文件,其中的项目1-4按顺序连接?我现在从chrome中得到这个错误:ERR_SSL_VERSION_OR_CIPHER_MISMATCH –

+0

如果你得到一个'ERR_SSL_VERSION_OR_CIPHER_MISMATCH',意味着你没有正确地连接你的密钥文件。试试这个工具来测试你做的一切正确https://www.sslshopper.com/certificate-key-matcher.html –

+0

似乎工作。谢谢!仍然得到不可信的连接(这是一个真正的SSL证书,而不是自签名)。但我形象是因为我在本地主机上运行。 –