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
现在起作用了