我正在尝试设置 stunnel 以从仅 HTTP 客户端访问 HTTPS Web 服务。应该很容易,对吧?我有以下 stunnel.conf:
client=yes
verify=0
[test-https]
accept = 1337
connect = www.google.com:443
但是当我用浏览器访问http://localhost:1337
Google 时,出现了 404 错误页面:
404. That’s an error.
The requested URL / was not found on this server
我尝试了许多其他网站,但总是会出现某种错误。例如,Wordpress 网站会说:
找不到 /etc/wordpress/config-localhost.php 或 /etc/wordpress/config-localhost.php。请确保其中一个存在、可被 Web 服务器读取且包含正确的密码/用户名。
看来我做的一些事情根本就是错的,但网上的每个示例都显示了与我完全相同的配置。有人能给我一些帮助吗?
我在 Arch Linux 上使用 stunnel 5.02-1 (x86_64)。我将 stunnel 日志放在粘贴箱。
答案1
问题出在部件上。如果您使用作为其名称,localhost
大多数服务器都不会响应。localhost
如何解决这个问题:首先,在您想要访问的服务器上执行 nslookup 并从多个 IP 中选择一个,即12.34.56.78
(不是真正的 Google IP,只是编造的)配置您的 stunnel.conf 以指向该 IP:
connect = 12.34.56.78:443
在您的客户端上设置/etc/hosts
(我假设它与 stunnel 是同一台机器,如果不是,请使用相应的 IP)此新行:
127.0.0.1 www.google.com
使用 URLhttp://www.google.com:1337
注意:如果仍然出现错误,请尝试将其accept
从 1337 更改为 443。
答案2
两个问题:
在目录 /etc/stunnel 中使用这些命令生成您自己的自签名证书:
openssl genrsa 1024 > stunnel.key openssl req -new -key stunnel.key -x509 -days 1000 -out stunnel.crt cat stunnel.crt stunnel.key > stunnel.pem
并确保文件 /etc/stunnel/stunnel.conf 中的两行
;cert = /etc/stunnel/mail.pem
;key = /etc/stunnel/mail.pem
修改如下:
cert = /etc/stunnel/stunnel.pem
key = /etc/stunnel/stunnel.pem
- 鉴于您的 [test-https] 标签,浏览器中的调用必须不是是
http://localhost:1337
,但相反必须是test-https://localhost:1337