答案1
我相信你正在寻找隧道:
Stunnel 是一种代理,旨在为现有客户端和服务器添加 TLS 加密功能,而无需对程序代码进行任何更改。
答案2
我个人会考虑 Hitch - 而不是运行功能齐全的 Web 服务器(Apache),Hitch 是专门为终止 TLS 连接而构建的。
它由 Varnish 团队构建,具有出色的安全记录,并且采用异步 IO 驱动,因此比 Apache2 的每个连接模型的进程更精简/更快。
答案3
据我理解,您想要tinyproxy
终止 TLS 并与后端通信纯 HTTP。
它似乎tinyproxy 不支持此功能:
不,tinyproxy 不支持透明 HTTPS 代理。仅支持透明 HTTP 代理。将端口 443 重新路由到端口 80 不起作用;这是两个非常不同的协议。唯一的方法是在系统/环境或浏览器中手动设置代理。
如果必须使用 HTTPS 透明代理,请考虑使用 Squid。
但您可以使用 Apache(包httpd
和mod_ssl
)来执行此操作:
笔记:我假设您的后端服务器绑定到端口 8080(因为它使 SELinux 更容易)。有关详细信息,请参阅服务管理端口,httpd_selinux。
- 设置 Apache 以使用 TLS(参见例如迪吉特的指南,以及安全建议)
- 你最终应该得到如下结果:
<VirtualHost *:443> DocumentRoot /var/www/html ServerName www.yourdomain.com SSLEngine on SSLCertificateFile /path/to/your_domain_name.crt SSLCertificateKeyFile /path/to/your_private.key SSLCertificateChainFile /path/to/chain.crt </VirtualHost>
- 添加代理指令:
[...] SSLCertificateChainFile /path/to/chain.crt ProxyEngine on SSLProxyEngine on ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ <Proxy http://localhost:8080/> Require all granted </Proxy>
- 设置 SELinux:
setsebool -P httpd_can_network_relay=1
- 重新开始
httpd
:systemctl restart httpd