NodeJS,使用带有express.js的私有ca.

时间:2014-11-13 14:54:14

标签: node.js ssl express openssl

我正在尝试使用自定义CA签名的服务器证书创建https / 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);

以下是我创建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部分做错了,我创建我的CA,根据定义自动签名,然后我创建我的服务器密钥和csr然后用我的CA证书签名。 我已尝试使用à直接自签名证书的相同nodeJS代码,在这种情况下它运行良好。

我认为问题是我的服务器证书既没有自动签名也没有公共CA签名,就好像express没有在配置对象中使用我的自定义ca.

有人可以确认或无效我的假设吗?

干杯, 保罗

1 个答案:

答案 0 :(得分:0)

好的,我在签名时发现我使用了错误的参数。

我正在使用:-signkey ca.key

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

现在可行了