对 HTTPS 服务器的 HTTP 请求可以强制加密吗?

对 HTTPS 服务器的 HTTP 请求可以强制加密吗?

我有一个运行 NodeJS 的 Unbuntu 服务器,我想上传一些文件。有些文件包含一些我不希望泄露的数据,但如果有人掌握了这些文件,也不会造成太大问题。我的 NodeJS 服务器目前是一个普通的 HTTP 服务器,但据我了解本文,应该可以强制加密 HTTP 文件上传。这是否意味着我可以使用 HTTP POST 请求上传文件,并且它是加密的?文件上传如何知道要加密文件?

HTTP 请求从 Microsoft Flow 发送。

答案1

HTTP 协议在 TCP 协议之上工作。HTTPS 在 TLS 之上工作。因此底层连接不同。为了使用 HTTPS 加密提交表单,您需要使用“升级”HTTP 标头将 HTTP 连接升级到 HTTPS。https://en.wikipedia.org/wiki/HTTP/1.1_Upgrade_header

HTTP 不是为加密数据而设计的。

关于你的 nodejs 问题,让我们看看这里的代码片段

var https = require('https');
https.createServer(options, app).listen(443);

模块https将创建一个监听 443 端口的服务器,用于 HTTPS 流量。下一个代码片段将创建 HTTP 服务器,用于监听 80 端口的流量

var http = require('http');
http.createServer(app).listen(80);

因此现在,您有两个服务器在两个不同的端口上监听。总结一下我的回答,HTTP 和 HTTPS 用于不同的连接。恐怕您无法动态地将 HTTP 会话转换为 HTTPS。

答案2

我认为最简单的解决方案是将其设置action为 https url。

<form action="https://<YOUR_Server/post-handler" method="post" ...>

相关内容