我广泛使用 Firefox 来访问无数的 Web 应用程序并对其进行故障排除,其中许多应用程序运行在 apache 虚拟主机环境中。
我一直遇到的一个问题是,在启用 SSL 的服务器上,我无法覆盖主机名来访问正确的虚拟主机。
通过 HTTP,人们可以访问一个 IP 地址,http://1.2.3.4/page.html
并伪造host:
具有不同值的标头来访问不同的虚拟主机。
例如,这些是等效的:
http://my.virtualhost.example.com
http://1.2.3.4
与标题host: my.virtualhost.example.com
。对于 HTTPS,这变得不可能,因为在建立 TLS 连接之前必须知道主机名,因此 apache 无法知道要服务哪个 SSL 虚拟主机。
解决方法是覆盖TLS 请求中的服务器名称指示ClientHello
(SNI) 字段。
有什么方法可以使用 Firefox 插件或扩展来覆盖 SNI 值吗?
我在 Windows 7 上使用 Firefox 40。
我有一个 TP-Link 路由器,我尝试通过 https 访问配置页面(192.168.0.1),但无法访问。它只能通过 http 运行。
任何路由器都会出现这种情况还是只是我的(或者可能只是 TP-Link)?
我在谷歌上搜索了很多这个问题,但似乎找不到与该主题相关的任何内容
我知道 HTTP 代理的工作原理,但不确定 HTTPS 代理的工作原理。更具体地说,我对加密部分感到困惑。
因此,客户端使用 HTTPS 连接到代理。我明白了。现在假设用户想要通过该代理连接到 Gmail。
我在 android 上使用 ffmpeg 时遇到了错误,但当我在 Linux 虚拟机上使用该库时,不会发生这种情况。我正在使用 FFmpeg Static Builds,来自这里。我在模拟器和 Linux VM 上使用稳定的 3.1.5 x86_64 版本。
我使用的模拟器是genymotion API 22 nexus 6p,linux vm是ubuntu 16.04。这个问题也出现在我的物理手机上,即运行cyyogenmod 6、API 22的nexus 5。
安卓日志:
ffmpeg version 3.1.5-static http://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.4.1 (Debian 5.4.1-2) 20160904
configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-5 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libass --enable-libebur128 --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid …
Run Code Online (Sandbox Code Playgroud) 我想通过在 VPS 上运行的代理强制将 HTTP(S) 流量从我的家庭网络发送到某些网站。
我安装tinyproxy
在 VPS 上,在端口 上运行8080
。在我的电脑上我正在运行
sudo ssh -i /home/user/.ssh/id_rsa -nNT -L 80:localhost:8080 -L 443:localhost:8080 remoteuser@vps
Run Code Online (Sandbox Code Playgroud)
本地访问代理。当我在 Firefox 设置中配置localhost:80
为代理时,一切正常(HTTP 和 HTTPS)。
但由于我不希望所有流量都通过该代理,因此我将其添加到我的电脑中/etc/hosts
:
127.0.0.1 server.example
Run Code Online (Sandbox Code Playgroud)
server.example
是为 HTTP 和 HTTPS 配置的 Web 服务器的名称。
访问http://server.example
正常,但https://server.example
在 Firefox 中打开失败并出现错误
SSL_ERROR_RX_RECORD_TOO_LONG
Run Code Online (Sandbox Code Playgroud)
curl
通过 HTTPS 访问页面也失败:
curl: (35) error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Run Code Online (Sandbox Code Playgroud)
据我了解,此问题是由 tinyproxy 使用纯 HTTP 响应 HTTPS 请求引起的。
首先,理论上可以实现我想要的吗?那些所谓的“智能 DNS”服务似乎正是这样做的。
这个问题是由我的设置引起的还是tinyproxy无法做到这一点?是否有不同的代理服务器能够做到这一点?
编辑:目前我正在我的 PC 上运行 SSH 隧道,并且 DNS 修改也在本地,但我想稍后将其部署在我的路由器上,以便来自我网络的任何设备的流量都通过此代理。
EDIT2:正如 @SteffenUllrich 在评论中所写,当通过 …
我想制作一个 HTTPS 鱿鱼代理(这种),任何人都可以使用它来访问任何网站。这不是反向代理,它适用于整个互联网。出于安全原因,不应允许访问我的子网中的 IP。我获得了 LetsEncrypt 证书proxy.mydomain.com
,我想知道如何为此正确配置鱿鱼。这是我当前的配置文件:
########### squid.conf ###########
#
## interface, port and proxy type
#http_port 0.0.0.0:80 transparent
https_port 0.0.0.0:443 intercept tls-cert="/etc/letsencrypt/live/proxy.mydomain.com/fullchain.pem"
## timeouts
forward_timeout 30 seconds
connect_timeout 30 seconds
read_timeout 30 seconds
request_timeout 30 seconds
persistent_request_timeout 1 minute
client_lifetime 20 hours
## host definitions
acl all src 0.0.0.0/0
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8 # RFC 1918 local …
Run Code Online (Sandbox Code Playgroud) 是否有代理(或其他解决方案)可以允许老式浏览器(在 HTTPS 时代之前 - 无 SSL/TLS 支持或较弱的 SSL/TLS 支持)与 HTTPS 网站连接?
换句话说:
旧浏览器 <-- http 连接 --> 客户端(本地)代理 <-- HTTPS 连接 --> 任何互联网网页
(浏览器向本地代理发送http页面请求,本地代理发送HTTPS请求,代理收到HTTPS响应/页面后,以未加密的http将其返回给浏览器)
此类代理的简单示例配置也受到欢迎。
TLS_termination_proxy(https://serverfault.com/questions/943649/https-http-lightweight-proxy )是我正在寻找的(还是仅适用于服务器)?
我已经开始检查 Windows 的 TLS_termination_proxy 列表(存档列表1、2)(Nginx、stunnel、Hiawatha、Caddy、Apache 和 Squid)中的代理。Nginx 似乎可以做到这一点。stunnel仅适用于 64 位(也有 32 位版本)。
我正在开发一个在服务器上运行的网络应用程序。会有客户端(智能手机浏览器)通过不连接到互联网的 WiFi 通过 HTTPS 连接到服务器。它主要用于为期 1 天的活动。
问题:是否可以在没有互联网的情况下使用 HTTPS?
我有一个使用本地 DNS 的想法:
offline.mydomain.com
offline.mydomain.com
都会下载到应用程序服务器,并且可以在证书的 CDP 和 AIA 中定义的路径上访问它们https://offline.mydomain.com
(并且DNS服务器指向offline.mydomain.com
应用程序服务器)整个流程是:
GET https://offline.mydomain.com/app
offline.mydomain.com
位于应用程序服务器的IP上GET http://crl.ca.com/crls/ca.crl
crl.ca.com
位于应用程序服务器的IP上GET http://certificate.ca.com/certs/ca.cer
certificate.ca.com
位于应用程序服务器的IP上但是,我不太了解网络。DNS部分可以吗?
尝试在 Windows 10 Pro 上的 Chrome(版本 80)中启用基于 HTTPS 的 DNS。尝试将其打开于
chrome://flags/#dns-over-https
根据FOSSBYTES 文章,但根据https://1.1.1.1/help,它未启用。
另外,根据https://www.zdnet.com/article/how-to-enable-dns-over-https-doh-in-google-chrome/,尝试附加此
--enable-features="dns-over-https<DoHTrial" --force-fieldtrials="DoHTrial/Group1" --force-fieldtrial-params="DoHTrial.Group1:server/https%3A%2F%2F1.1.1.1%2Fdns-query/method/POST
到快捷方式的目标字段,通过编辑其属性字段来启动 Chrome。关闭 Chrome 和 PC,重新启动后重新启动 Chrome,但当我在https://1.1.1.1/help上检查时,它仍然未启用。
顺便说一句,在 Firefox 和 Brave 中设置它没有任何问题,完全按照FOSSBYTES 说明描述。对于这些浏览器,Cloudflare确认页面将“使用 DNS over HTTPS (DOH)” 显示为“是”。还没有尝试过铬。
如何配置 Google Chrome(以及 Chromium)以通过 HTTPS 使用 DNS?
$ curl -s https://goolge.ca | wc
0 0 0
$ curl -vs https://goolge.ca
. . .
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS alert, bad certificate (554):
* SSL certificate problem: EE certificate key too weak
* Closing connection 0
$ lsb_release -a
No LSB modules are available.
Distributor …
Run Code Online (Sandbox Code Playgroud) https ×10
proxy ×4
linux ×3
ssl ×3
dns ×2
windows ×2
android ×1
browser ×1
certificate ×1
debian ×1
encryption ×1
ffmpeg ×1
firefox ×1
http ×1
http-proxy ×1
networking ×1
router ×1
squid ×1
tcp ×1
tls ×1