首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Stunnel: ssl到ssl

Stunnel: ssl到ssl
EN

Server Fault用户
提问于 2015-10-09 11:26:37
回答 3查看 2.7K关注 0票数 2

我有一个小服务,它只在https://localhost:41952上监听并检查源主机名(它必须是本地主机)。我想连接到“听:1988年”,并将请求重定向到"localhost:41952“。

代码语言:javascript
复制
https://192.168.1.10:1988 -> redirect https://localhost:41952

当前配置:

代码语言:javascript
复制
[myservice]
cert = stunnel.pem
accept = 0.0.0.0:1988
connect = localhost:41952

openssl_client日志:

http://pastebin.com/7bg3sf7J

请注意,此证书与本地主机上的证书不同:41952。

卷曲试验:

代码语言:javascript
复制
$ curl https://192.168.1.17:1988/DYMO/DLS/Printing/Check -vk
*   Trying 192.168.1.17...
* Connected to 192.168.1.17 (192.168.1.17) port 1988 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
* Server certificate: localhost
> GET /DYMO/DLS/Printing/Check HTTP/1.1
> Host: 192.168.1.17:1988
> User-Agent: curl/7.43.0
> Accept: */*
> 

永远等着。

也许我需要client = yes?但是我没有任何证书,除非我在服务https://localhost:41952的站点上从Firefox导出的证书

我最初的问题是:

Windows下使用SSL的免费反向代理

EN

回答 3

Server Fault用户

发布于 2015-10-09 11:52:18

stunnel是一个在非SSL和SSL之间创建网关的程序.来自主页上的描述

Stunnel是一种代理,旨在向现有客户端和服务器添加TLS加密功能,而不对程序代码进行任何更改。

此工具不用于创建从SSL到SSL的网关。在您的情况下,您需要的只是一个简单的TCP转发器,可以用索纳特完成:

代码语言:javascript
复制
socat TCP4-LISTEN:1988,fork TCP4:127.0.0.1:41952

有了这个转发器,到192.168.1.17:1988的连接将被转发到127.0.0.1:41952。客户端将从服务器获得原始证书,因为转发是在TCP级别完成的。服务器将看到来自127.0.0.1的连接。

编辑:经过大量的通信,现在很清楚的是,目标不是要求正确的源主机名,而是问题中的正确引用者,而不是响应中声称的正确的引用者,而是主机HTTP请求头具有预期的值'localhost‘。由于主机标头是从URL设置的,因此需要确保将请求转发到远程系统,并且浏览器不试图自行解析URL,否则它将尝试连接到正在运行浏览器的机器上的服务器。要将URL的解析推迟到目标系统,您需要在那里运行一个代理,比如您尝试过的Charles或SOCKS代理。

票数 3
EN

Server Fault用户

发布于 2015-10-10 19:12:52

因此,要连接到https://192.168.1.10:1988并访问监听IP 192.168.1.10主机上环回接口的4952端口的SSL服务:

我们需要两节警钟才能实现我们想要的。

代码语言:javascript
复制
[myservice]
cert = stunnel.pem
client = no
accept = 0.0.0.0:1988
connect = localhost:1987

[myserviceaux]
cert = stunnel.pem
client = yes
accept = localhost:1987
connect = localhost:4952

我唯一不能实现的就是修改头主机,使其成为适用于所有请求的本地主机。

从卷曲看,它工作得很完美:

代码语言:javascript
复制
$ curl https://192.168.1.10:41951/DYMO/DLS/Printing/Check -k -H "Host: localhost"
票数 1
EN

Server Fault用户

发布于 2019-01-08 15:45:51

我使用以下命令解决了Windows上类似的HTTPS-TO-HTTPS问题:

netsh interface portproxy add v4tov4 listenport=443 listenaddress=127.0.0.1 connectport=[remote-https-port] connectaddress=[remote-ip]

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/727855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档