gpt4 book ai didi

ssl - 我如何(手动)拦截自定义消息并将其返回给发出 HTTPS 请求的浏览器

转载 作者:太空宇宙 更新时间:2023-11-03 14:44:03 25 4
gpt4 key购买 nike

我正在创建一个“防火墙”类型的设备(即位于通信中间),在某些情况下需要拦截 HTTPS 请求并向客户端浏览器返回一条消息(例如:抱歉,这被阻止了)。

我可以通过重定向(使用 iptables DNAT)到 netcat 正在监听的设备上的另一个端口来为 HTTP 执行此操作:虽然真实; do echo -e "HTTP/1.1 200 OK\n\nsorry this is blocked"|nc -l -p 8000;完成

(所以 nc 正在监听端口 8000 并返回正常代码 200 回复。当然也可能是其他一些返回代码,如 403 Forbidden 等)

但是HTTPS怎么办?整个事情都封装在 SSL/TLS 中,如果被拦截,浏览器将只显示安全连接失败的消息。我尝试使用指向 http://127.0.0.1 的位置的 HTTP 307 临时重定向进行响应(然后会给出上述消息)。但是浏览器不喜欢这样。

我需要显示某种自定义消息(不一定是 HTML)。我意识到,如果可以将 HTTPS 请求更改为 HTTP,这将是一个巨大的安全问题,从而在客户端不注意的情况下剥离安全性,但是是否可以在客户端中强制弹出消息或其他内容?或者至少是像“403 Forbidden”这样的标准代码……?我可以(滥用)使用 SSL 或 TLS 协议(protocol)中的某些内容吗?

谢谢。

最佳答案

所以你正在开发一个透明代理。当涉及到 HTTPS 流量时,每个代理都有选择:

  • 不解密通过
  • 完全阻止
  • 执行中间人攻击以获得对内容的访问权限

如果您执行中间人攻击并且客户端不信任代理使用的证书,它将收到证书警告。您不能发送任何与客户端相关的 HTTP,因为 SSL/TLS 已经无法建立隧道。没有隧道意味着您将无法传输单个“HTTP 字节”(这也意味着您无法将客户端重定向到其他地方)。

并且在 SSL/TLS 级别上,AFAIK 无法发送自定义消息。 “TLS 警报消息”仅允许 pre-defined constant values .

关于ssl - 我如何(手动)拦截自定义消息并将其返回给发出 HTTPS 请求的浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40674277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com