【发布时间】:2016-09-18 14:07:37
【问题描述】:
我在尝试访问使用 NodeJS 创建的 HTTPS 服务器时出错。
我该怎么办:
1.首先:generate a self-signed certificate:
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
2.创建简单的NodeJs Https服务器 -
var https = require('https');
var fs = require('fs');
var server_port = 8080;
var httpsOptions = {
key: fs.readFileSync('\key.pem'),
cert: fs.readFileSync('\cert.pem')
};
var app = function (req, res) {
res.writeHead(200);
res.end("hello world\n");
}
https.createServer(httpsOptions, app).listen(server_port);
运行服务器:node main.js(文件名) 服务器正在运行,但是当我尝试访问 https://localhost:8080
连接到服务器。结果是:
【问题讨论】:
-
由于服务器是自签名的,浏览器会哭。您需要将证书添加到浏览器的信任库中。
-
@NehalJWani 这仍然适用于生产服务器吗?我对自签名证书很好奇
-
@sova 对于面向公众的生产服务器,您必须购买证书,或者从letsencrypt或startcom获得免费证书。
-
证书可能格式错误,因为它在浏览器中使用。另请参阅How do you sign Certificate Signing Request with your Certification Authority 和How to create a self-signed certificate with openssl?,它提供了大量有关 X.509 服务器证书、如何呈现名称以及各种规则的来源的背景信息。
-
另见How to create an HTTPS server in Node.js?、Create HTTPS server with node js。我猜答案已经提供给你,除了证书主机名。
标签: javascript node.js browser https