我正在开发NodeJS API,我得到了一些关于部署它的问题
假设我从w3学校得到了一个像这样的HTTP服务器示例:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('Hello World!');
res.end();
}).listen(8080);
Q1例如,我可以将http
切换到https
,并加载一些本地自签名证书。但这有什么意义呢?由于证书是自签名的,因此它对大多数浏览器无效。
Q2我不能把它放在服务器上,用例如PM2运行它,并用HTTPS保护API连接的域吗?
Q3我真的需要使用NodeJS https库来制作安全的API吗?
我对网络安全和部署有点陌生,所以我担心我可能会错过一些关键部分,请启发我。
自签名证书在受控环境中很有用,但当您的受众是普通公众时就不那么有用了。从公认的第三方获得证书。
如果你的网站是通过HTTPS提供服务的,但你的网络服务不是,那么你就有巨大的安全风险。请求并发送到web服务的所有数据都不会被加密。更重要的是,浏览器可能会拒绝将不安全来源的数据拉入他们使用HTTPS加载的网站。
PM2没有向站点添加HTTPS的内置功能。
您不需要使用https
模块。在大多数情况下,运行一个处理加密的反向代理就足够了。浏览器将使用HTTPS向反向代理发出请求,反向代理将使用纯HTTP转发请求。
通过确保反向代理和Node.js应用程序之间没有未加密的网络流量,可以保护Node.js的应用程序不被拦截。通常,这是通过在同一台计算机上运行它们来完成的。
PM2文档介绍了使用SSL的反向代理。