NodeJS,与express.js一起使用private ca

我正在尝试使用由自定义CA签名的服务器证书创buildhttps / express服务器。 这是我的代码:

var express = require('express'); var https = require('https'); var fs = require('fs'); var app = express(); var config = { key: fs.readFileSync('cert/server.key'), cert: fs.readFileSync('cert/server.crt'), ca: fs.readFileSync('cert/ca.crt') }; app.get('/', function(req, res) { res.send('Hello world'); }); https.createServer(config,app).listen(443); 

这里是我如何创build我的CA和我的服务器证书:

 ### CA self signed openssl genrsa -des3 -out ca.key 1024 openssl req -new -key ca.key -out ca.csr openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt ### server cert signed by CA openssl genrsa -des3 -out server_pass.key 1024 openssl rsa -in server_pass.key -out server.key openssl req -new -key server.key -out server.csr openssl x509 -req -days 365 -in server.csr -signkey ca.key -out server.crt 

我不认为我在openssl部分做错了,我创build了我的CA,按照定义自动签名,然后创build我的服务器密钥和csr,然后用我的CA证书签名。 我已经尝试了与直接自签名证书相同的nodeJS代码,在这种情况下,它运行良好。

我假设问题是我的服务器证书既不是自动签名,也不是由公共CA签名,就好像express没有在configuration对象中使用我的自定义CA一样。

有人可以证实或无效我的假设?

干杯,保罗

好的,我发现我签署我的密钥时使用了错误的参数。

我正在使用: -signkey ca.key

但是我应该使用,当签名元素是CA文件时: -CA ca.crt -CAkey ca.key -CAcreateserial

现在起作用了