以下是我在NodeJS官方网站上找到的脚本:
// curl -k https://localhost:8000/
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('hello world\n');
}).listen(8000);
我对SSL事情完全不熟悉。我阅读了一些关于如何在Nodej上启用SSL的教程,但对该过程仍然没有信心。
我有一个域名(Godaddy),SSL(Namecheap)和云服务器(数字海洋,应用程序部署在HTTP前缀上)。
每当我打开网站的登录页面时,Google Chrome都会将其标记为“不安全”,因此我想在网站上添加SSL。
我需要在NodeJS服务器上做什么(Express)以及我需要在Namecheap上做些什么?这样做的顺序是什么?什么是生成.pem .csr文件的cmd行?
我没有找到并且全面的指导以简洁的方式制定所有步骤,所以只需简明地(如果可能的话)制定步骤,并指向进一步挖掘资源的链接。
另外,我如何使用express框架在上面的脚本中创建https服务器?
答案 0 :(得分:0)
该脚本适用于为https设置证书。如果您的网站是公开的,那么您将需要从您的ssl服务中购买证书,在您的示例中为Namecheap。然后,您可以将它们移动到主机并在示例中的选项对象中引用它们。但是,您可以生成自己的ssl证书,这也可以。但是,任何用户都会收到警告,因为您自己签名/创建了他们,因此他们不受信任。我建议使用Namecheap选项。
注意:您的示例中只有一个https服务器,任何试图通过http访问您网站的人都会收到一个空白页面。您还需要通过以下方式创建一个http服务器:
var http = require('http');
http.createServer(...);
我建议让http服务器重定向到https网址。
答案 1 :(得分:0)
我的代码和错误在这里:
找不到这样的目录错误:
key: fs.readFileSync('../private.key'),
cert: fs.readFileSync('../public.cert')
错误,找不到这样的目录
key: fs.readFileSync('./private.key'),
cert: fs.readFileSync('./public.cert')
工作代码应为
key: fs.readFileSync(__dirname + '/private.key', 'utf8'),
cert: fs.readFileSync(__dirname + '/public.cert', 'utf8')
完整的https代码为:
const https = require('https');
const fs = require('fs');
// readFileSync function must use __dirname get current directory
// require use ./ refer to current directory.
const options = {
key: fs.readFileSync(__dirname + '/private.key', 'utf8'),
cert: fs.readFileSync(__dirname + '/public.cert', 'utf8')
};
// Create HTTPs server.
var server = https.createServer(options, app);
这是我 express 4.0 的 工作代码 。
express 4.0与3.0和其他版本有很大的不同。
4.0您有/ bin / www文件,将在此处添加https。
“ npm start”是启动Express 4.0服务器的标准方式。
readFileSync()函数应使用 __ dirname 获取当前目录
而require() 使用./ 则引用当前目录。
首先,将private.key和public.cert文件放在/ bin文件夹下, 与WWW文件相同的文件夹 。