我可以强制 https 请求使用 http 吗

我可以强制 https 请求使用 http 吗

我遇到过这种情况,我的雇主使用证书来监视每个人的 https 流量。他们使用自签名证书进行不当设置,因此除非应用程序允许我忽略证书,否则我只会收到无效证书消息。

我正在尝试,npm install并且它正在运行的脚本试图通过 https 下载文件,但失败了。我尝试忽略节点中的证书,但没有成功。

我能想到的唯一办法是强制系统范围内的所有 https(或至少是指向此地址的 https)改用 http。有点像主机文件不是协议无关的。

我们有没有什么办法可以实现这个?我使用的是 Win7。

答案1

在大多数情况下(包括这种情况),这是不可能的。你只会被重定向到 HTTPS。所以我不会为此烦恼。

相反,我会尝试回答您的实际问题:如何让 NPM 工作。那里使用 HTTP 连接的方法

npm config set registry http://registry.npmjs.org/

但这不是一个好主意。同样不安全,但仍使用 HTTPS

npm config set strict-ssl false

相反,考虑一下告诉 NPM 你雇主的 CA

npm config set ca "-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"

值应为 PEM 格式,并且换行符应替换为字符串“\n”。

当然,这一切的安全性取决于雇主的 HTTPS 拦截器。如果它很糟糕,那么一切都和普通的 HTTP 一样不安全。

答案2

您可以设置自己的本地 HTTPS 代理,并让其忽略不良证书。一种简单的方法是使用Fiddler。它有一个忽略证书错误的选项。Fiddler 将信任您的无效证书,并为您提供安装到本地证书存储中的受信任证书。

在此处输入图片描述

这显然非常危险,并且只应在您的工作场所不允许进行正确的证书验证的特定情况下才可以这样做。

答案3

这种“包装器”证书在大多数 Web 代理/IDS 系统中很常见。Windows 的默认行为是自动检测网络上的代理服务器(出于很多原因,这种做法很愚蠢,但这超出了本文的讨论范围)。您需要做的就是从 Internet 选项控制面板(连接选项卡,LAN 设置按钮)取消选中该选项。只需取消选中所有框即可。

互联网选项

您会从屏幕截图中注意到,此示例中的设置已变灰并由组策略强制执行。我假设这台计算机不在域中(因为如果它在域中,则代理服务器设置不正确,这意味着您的系统管理员能力不足,因此可以培训用户忽略证书警告)。

大多数应用程序在创建套接字时仅接受系统的代理设置。我不太清楚npm它是否有代理覆盖设置。


顺便说一句,“监视”这个词有点太夸张了。使用 HTTPS 连接来逃避入侵检测系统是一种常见的恶意软件策略。如果您正在运行企业网络并从网络安全的角度进行尽职调查,则需要能够检查 HTTP 和 HTTPS 数据包。

答案4

我会绕过它,或者更具体地说,使用加密隧道连接到外部服务器(我的家庭网络上有一台 Raspberry Pi)。我一直使用 SSH 和动态隧道来绕过 Web 过滤。然后将您的程序配置为在 localhost:#### 上使用 SOCKS 代理。该数字是动态隧道连接到的本地端口。当然,这可能违反贵公司的政策。

相关内容