以下是我试图实现的目标:我有一个TCP客户端,需要连接到我们的服务器应用程序,但我需要通过HTTPS进行通信。据我所知,这可以通过反向(或正向?)代理如下:
TCP client <--- HTTPS ---> myproxy.com:443 <------> tcp server app that listen port 7999
我使用以下vhost配置成功创建了一个不带SSL的代理:
<VirtualHost *:80>
ServerName myproxy.com
SetEnv proxy-nokeepalive 1
ProxyErrorOverride off
ProxyRequests On
ProxyBadHeader Ignore
ProxyVia Full
AllowCONNECT 80 443 7999
</VirtualHost>
(我不确定这些参数中是否有任何一个是不必要的tbh)
使用该vhost,我可以像这样启动与服务器的tcp连接:
telnet myproxy.com 80
> Connected to myproxy.com.
CONNECT myproxy.com:7999 HTTP/1.1
Host: myproxy.com:7999
> HTTP/1.0 200 Connection Established
> Proxy-agent: Apache/2.4.18 (Ubuntu)
一旦我添加SSL并使用端口443,我就无法再连接了:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName myproxy.com
SetEnv proxy-nokeepalive 1
ProxyErrorOverride off
ProxyRequests On
ProxyBadHeader Ignore
ProxyVia Full
AllowCONNECT 80 443 7999
SSLProxyEngine On
SSLEngine On
SSLCertificateFile...
</VirtualHost>
</IfModule>
如果我尝试连接到此vhost,我会得到以下结果:
telnet myproxy.com 443
> Connected to myproxy.com.
CONNECT myproxy.com:7999 HTTP/1.1
Host: myproxy.com:7999
> Connection closed by foreign host.
我做错了什么,只有使用端口443才能做到这一点吗?键入此命令时,我尝试使用SSL打开的端口80(与上一个vhost相同,但使用<代码>
非常感谢。
您首先做的是创建一个HTTP代理并向其发出一个普通连接请求。这正如预期的那样。
然后,您所做的是为连接到此代理启用SSL,但再次发出普通连接。由于显式配置了到代理的连接应为SSL而非普通连接,因此此操作如预期的那样失败。这意味着代理期望连接以TLS握手(即客户端发送的ClientHello)开始,而不是一些纯文本HTTP请求。
如果您想使用HTTPS连接到代理,那么您不能使用简单的telnet,因为telnet只使用普通的TCP。您需要使用支持TLS的客户端,例如openssls_client
。然后你会得到类似的东西
$ openssl s_client -connect myproxy:443
CONNECTED
...
SSL-Session:
Protocol : TLSv1.2
Cipher : ...
---
CONNECT myproxy:7999 HTTP/1.0
HTTP/1.0 200 Connection established
我正在尝试创建一个bukkit插件,当事件触发时,它将连接到tcp服务器并发送消息。 我已经掌握了基础知识,但我错过了一些东西,我不知道从这里开始。我可以看到该插件与服务器建立了连接,但随后抛出错误并且没有发送任何消息。 我正在尝试理解当事件发生时如何向tcp客户端发送字符串。为了测试,我使用了玩家移动事件。 当我启动时,我在craftbukkit服务器日志中看到以下内容: 当我与我的世界客户端连
问题内容: 我面临着Java6 / 8的奇怪行为。我尝试通过需要基本用户身份验证的代理进行隧道传输。通过标准的Java身份验证器执行此操作。如果我尝试访问https网址作为第一个网址,则会引发异常: java.io.IOException:无法通过代理隧道。代理返回“需要HTTP / 1.1 407代理身份验证” 但是,如果我先访问http URL,然后再访问https URL,则https访问正
我们在部署在k8s集群上的Java应用程序中使用okhttp。我们的源应用程序没有启用istio,并通过特使sidecar连接到目的地。连接链如下所示: SRC-------- 因此,实际上SRC应用程序并不是直接与DST应用程序建立连接,而是与它前面的代理建立连接。当DST应用程序关闭时,它会终止DST和特使之间的所有连接,但SRC和特使之间的连接保持打开状态。这就是为什么SRC应用程序开始收到
问题内容: 我在完全冻结JVM的应用程序中发现一个错误。产生的stacktrace将为开发人员提供有价值的信息,我想从Java控制台中检索它。JVM崩溃时,控制台被冻结,我无法再复制包含的文本。 是否可以将Java控制台直接通过管道传输到文件,或通过其他某种方式访问Java应用程序的控制台输出? 更新:我忘记提了,没有更改代码。我是手动测试仪。 更新2:这是在Windows XP下,它实际上是
我有一个由Python构建的API服务器。我需要一组客户端/计算机通过发出http post请求将数据发送到API服务器。 这里的数据实际上是html内容。(注意:我没有将合法数据转换为HTML/XML格式,数据本身就是我从web上收集的HTML),通常每页约200KB。我正试图通过使用串行/串行和压缩来尽可能减轻网络负载。 我正在考虑通过网络发送原始超文本标记语言。有没有类似序列化html对象的
嗨,我一直在尝试代理解决方案,以避免在myapp中的cors问题,但它似乎不起作用,我重启了我的机器这么多次,这没有什么区别。基本上,myapp使用ftchApi调用另一个域(localhost:8080),这是一个SpringBoot应用程序终结点。我添加了package.json"代理":"http://localhost:8080/",但api仍然返回与localhost:3000调用,我尝