我正在尝试使用自定义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.
有人可以确认或无效我的假设吗?
干杯, 保罗
答案 0 :(得分:0)
好的,我在签名时发现我使用了错误的参数。
我正在使用:-signkey ca.key
但是当签名元素是CA文件时我应该使用:-CA ca.crt -CAkey ca.key -CAcreateserial
现在可行了