node.js上的服务器HTTPS不起作用

时间:2014-07-02 14:58:57

标签: node.js ssl https

我正在尝试创建HTTPS服务器。我按照以下说明使用Cygwin64生成了privatekey.pem和certicate.pem:

openssl genrsa -out privatekey.pem 1024
openssl req -new -key privatekey.pem -out certrequest.csr
openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem

虽然我的服务器代码是这样的:

var https = require('https');
var fs = require('fs');

var options = {
  key: fs.readFileSync('privatekey.pem'),
  cert: fs.readFileSync('certificate.pem')
};

https.createServer(options, function (req, res) {
  res.writeHead(200);
  res.end("hello world\n");
}).listen(8001);

当我尝试连接到地址https://localhost:8001时,网页无法使用。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:4)

您的代码绝对正常。我在我的localhost中测试过它。我认为问题在于您的密钥生成。尝试再次生成密钥并运行您的服务器。我希望它能奏效。

注意:您生成的证书仅适用于localhost。所以不要在任何在线IDE(如codio.com,koding.com,cloud9.com等)中尝试这一点。如果您愿意,您必须从Verysign公司购买SSL证书。

OR

如果没有尝试以下代码。

第1步:打开终端并运行以下命令以生成私钥文件' key.pem'

$ openssl genrsa 1024 > key.pem

第2步:现在运行以下命令以生成SSL证书文件' key-cert.pem'

$ openssl req -x509 -new -key key.pem > key-cert.pem

第3步:现在使用以下内容编写' server.js' 文件。

var https = require('https');
var fs = require('fs');

var options = {
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('key-cert.pem')
};

https.createServer(options, function (req, res) {
  res.writeHead(200);
  res.end("hello world\n");
}).listen(8001);

第4步:现在使用以下命令运行服务器文件。

$ node server.js

第5步:现在,在浏览器中点击了网址'https://localhost:8001'并接受了证书,您将看到“你好世界”#39;页面上的消息。