服务器中止SSL握手错误

我无法获得运行在HTTPS工作node.js后面的服务器。 我的目标是让一个Hapi服务器运行一个自签名证书。

这就是我如何生成我的自签名证书:

openssl genrsa -out key.pem openssl req -new -key key.pem -out csr.pem openssl x509 -req -days 9999 -in csr.pem -signkey key.pem -out cert.pem rm csr.pem 

这是我在Hapi启动服务器的方式:

 server.connection({ port: 9920, tls: { key: fs.readFileSync(path.resolve(__dirname, './cert/key.pem')), cert: fs.readFileSync(path.resolve(__dirname, './cert/cert.pem')), rejectUnauthorized: false }, routes: { cors: true } }); 

为了validation它不是一个Hapi唯一的问题,我证实,这也不能在香草node.js工作:

 var https = require('https'); var fs = require('fs'); var options = { key: fs.readFileSync(path.resolve(__dirname, './cert/key.pem')), cert: fs.readFileSync(path.resolve(__dirname, './cert/cert.pem')), rejectUnauthorized: false }; var a = https.createServer(options, function (req, res) { res.writeHead(200); res.end("hello world\n"); }).listen(8000); 

这两个服务器都会在curl中引发相同的错误:

 $ curl -kiv https://localhost:9920 * Rebuilt URL to: https://localhost:9920/ * Trying ::1... * connect to ::1 port 9920 failed: Connection refused * Trying 127.0.0.1... * Connected to localhost (127.0.0.1) port 9920 (#0) * Server aborted the SSL handshake * Closing connection 0 curl: (35) Server aborted the SSL handshake 

版本:

  • 节点:v4.1.1
  • npm:3.4.0

这是怎么回事?

不是ssl上的专家,因为没有多less使用它,但是如果您检查此代码,选项集与您configuration的不同。

https://github.com/hapijs/university/blob/master/lib/config.js#L6

密钥和证书可能没有被正确创build,请检查这些文档以确保您正确地使用方法hapi & node