2014-11-13 2 views
2

Я пытаюсь создать https/express сервер с сертификатом сервера, подписанным настраиваемым CA. Вот мой код:NodeJS, использование private ca с express.js

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, как если бы курьер не использовал мой пользовательский ca в объекте config.

Может кто-то подтвердить или аннулировать мое предположение?

Приветствие, Пол

+1

ли это бросает ошибку, или же соединения из браузера просто не получилось? – loganfsmyth

ответ

0

OK Я узнал, что я использовал неправильный параметр при подписании моего ключа.

я использовал: -signkey ca.key

, но я должен использовать, когда элемент подписи является CA файла: -CA ca.crt -CAkey ca.key -CAcreateserial

Сейчас он работает

Смежные вопросы