我想问你一些建议。我对HTTPS和证书不熟悉。我有自己的可在Node.js上运行的小型应用程序。
我的package.json:
{
"name": "chatwidgethttps",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node server/ index.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.16.3"
}
}
npm启动,我的应用正在https://localhost:3333上运行。我将此URL放到外部LiveChat平台(在https下),因为我的应用程序应充当实时聊天窗口小部件。所有数据都必须得到保护(所有数据都是秘密的)
我的问题是在这种情况下最好的方法是什么-我需要自签名证书吗? 每个想要使用我的应用程序的人都必须安装证书吗?如果是,怎么办? 如何使证书自动安装?
到目前为止,我已经尝试过类似的事情:
const express = require('express')
const fs = require('fs')
const https = require('https')
const path = require('path')
const app = express();
const directoryToServe = 'client'
const port = 3333
app.use('/', express.static(path.join(__dirname, '..', directoryToServe)))
const httpsOptions = {
cert: fs.readFileSync(path.join(__dirname,'ssl','server.crt')),
key: fs.readFileSync(path.join(__dirname,'ssl','server.key'))
};
https.createServer(httpsOptions,app).listen(port, function() {
console.log('Server started')
});
数百个教程中的一个说,毕竟我必须在浏览器上安装我的public server.crt证书,但是它不起作用-在浏览器上,我仍然看到红色文本“不安全”。在Firefox或IE上,我的应用程序完全不可见-我收到消息:
此网站不安全
这可能意味着有人试图欺骗您或窃取任何信息 您发送到服务器。您应该立即关闭此网站。
非常感谢您提供所有提示。
答案 0 :(得分:1)
请访问Let's Encrypt。它为您提供了免费的签名证书,并带有certbot,它将在过期时自动续订证书。 我也不建议从Express应用程序提供证书,因为这会大大降低应用程序的性能。因此,请考虑使用nginx,它是反向代理负载平衡器,还可以提供HTTPS所需的证书。
答案 1 :(得分:0)
摘要:
我已经在本地测试过我的https应用程序,但遇到了不安全连接的问题。但是答案很简单- 我们要做的就是将应用程序上传到应该已经有一些证书的https服务器。