我对HTTPS、SSL等内容了解不多。
我想知道如何使用Node.js进行HTTPS。我对node.js的使用很熟悉,但在使用HTTPS时会出现错误。
我认为我需要安装一些东西(openSSL?)。我想知道在Windows 8.1电脑上使用node.js HTTPS服务器需要安装哪些东西(不,我不想使用任何形式的Linux。也不要cygwin),
我不需要付费证书,我只需要它能正常工作。它没有从浏览器接收请求,所以我不关心付费证书。
我对HTTPS、SSL等内容了解不多。
我想知道如何使用Node.js进行HTTPS。我对node.js的使用很熟悉,但在使用HTTPS时会出现错误。
我认为我需要安装一些东西(openSSL?)。我想知道在Windows 8.1电脑上使用node.js HTTPS服务器需要安装哪些东西(不,我不想使用任何形式的Linux。也不要cygwin),
我不需要付费证书,我只需要它能正常工作。它没有从浏览器接收请求,所以我不关心付费证书。
mkdir conf
cd conf
ca.cnf
文件以用作配置快捷方式:
wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/ca.cnf
openssl req -new -x509 -days 9999 -config ca.cnf -keyout ca-key.pem -out ca-cert.pem
ca-key.pem
和 ca-cert.pem
的证书颁发机构,让我们为服务器生成私钥:
openssl genrsa -out key.pem 4096
server.cnf
文件以用作配置快捷方式:
wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/server.cnf
openssl req -new -config server.cnf -key key.pem -out csr.pem
openssl x509 -req -extfile server.cnf -days 999 -passin "pass:password" -in csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem
sudo cp ca-crt.pem /usr/local/share/ca-certificates/ca-crt.pem
sudo update-ca-certificates
server.js
的代码看起来像这样:var http = require('http');
var https = require('https');
var fs = require('fs');
var httpsOptions = {
key: fs.readFileSync('/path/to/HTTPS/server-key.pem'),
cert: fs.readFileSync('/path/to/HTTPS/server-crt.pem')
};
var app = function (req, res) {
res.writeHead(200);
res.end("hello world\n");
}
http.createServer(app).listen(8888);
https.createServer(httpsOptions, app).listen(4433);
进入server.js
所在的目录:
cd /path/to
运行server.js
:
node server.js
在第三步中,你需要在服务器上下载并运行Certbot应用程序。Certbot会要求输入"YourWebsite.com"。然后它会为你颁发一个新的HTTPS证书,并修补你的服务器配置文件以使用该HTTPS证书。
例如,我的node服务器在AWS EC2上运行,监听3000端口。我发现Ubuntu比Amazon自己的Linux更容易配置。我使用AWS Route53将域名映射到具有静态弹性IP地址的EC2实例。我在EC2中安装了Nginx,将客户端的80端口请求映射到我的3000端口的服务器上。Certbot会自动修补Nginx配置文件以使用新的HTTPS证书。
Certbot非常简单。这是因为Certbot在你的服务器上运行,所以HTTPS认证机构(LetsEncrypt)可以通过与Certbot在互联网上通信来验证你控制该域名。