首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Squid反向代理的多个SSL证书

使用Squid反向代理的多个SSL证书
EN

Server Fault用户
提问于 2013-11-17 17:41:44
回答 1查看 9.6K关注 0票数 1

我一直在升级我的网络,从使用apache反向代理(不够强大)升级到只为反向使用而配置的Squid代理。

我的squid代理是在CentOS 6VM上运行的,目前运行在我预先存在的apache旁边,所以我仍然在端口3128上运行squid。

我在我的/etc/squid/squid.conf中有这个设置,

代码语言:javascript
复制
http_port 3128 accel vhost
visible_hostname squid

cache_peer 192.168.0.13 parent 80 0 no-query originserver name=server1
cache_peer_domain server1 www.server1.com server1.com

cache_peer 192.168.0.14 parent 80 0 no-query originserver name=server2
cache_peer_domain server2 www.server2.com server2.com

cache_peer 192.168.0.15 parent 80 0 no-query originserver name=server3
cache_peer_domain server3 www.server3.com server3.com

http_access allow all

这对于所有的HTTP连接都是完美的。

它指示

代码语言:javascript
复制
www.server1.com:3128

代码语言:javascript
复制
192.168.0.13:80

我一直试图为这三个域中的两个实现SSL证书。昨晚,我设法获得了一些成功的配置,一个完全工作的HTTPS连接到我的一个域。

我在HTTP设置之前添加了这个配置:

代码语言:javascript
复制
https_port 443 accel ssl-bump transparent vhost cert=/usr/ssl/CA/server1.crt key=/usr/ssl/CA/server1.key

cache_peer 192.168.0.12 parent 443 0 no-query originserver login=PASS ssl sslflags=DONT_VERIFY_PEER name=server1_ssl
cache_peer_domain server1_ssl ssl www.server1.com server1.com

昨晚似乎没问题。它会连接到

代码语言:javascript
复制
https:// www.domain1.com

完全加密。由于其中一个选项(尝试和错误-不记得哪一个),它解密数据包,并将HTTPS请求定向到正确的VM。VM已经安装了SSL证书,因此将识别HTTPS请求,并且从开始到结束对整个页面量进行了加密。

我可以访问https:// www.domain2.com,它会说连接是部分加密的,并且会显示一个证书错误,即证书是用于www.domain1.com的。

然而,今天,这确实干扰了到domain1的HTTP,我的浏览器说页面被重定向的方式永远不会完成。

此后,我从配置文件中删除了整个SSL连接配置,并且只运行标准HTTP。

有什么方法可以让https:// www.domain1.com读取cert domain1.crt和直接到domain1's VM,https:// www.domain2.com读取cert domain2.crt并直接读取domain2 2‘S VM?

很抱歉有这么长的问题,但这是一个非常具体的问题,我一直在努力提供尽可能多的信息。

谢谢

EN

回答 1

Server Fault用户

发布于 2014-10-21 08:11:19

Squid不支持SNI编写的这里。所以有了鱿鱼:

代码语言:javascript
复制
https://server1.com (cert for server1.com) => http://mylanip1
https://server2.com (cert for server2.com) => http://mylanip2

你必须:

  1. 将地址放在不同的IP上,因为证书被分配给uniqe对IP,端口。
  2. 像这样配置Squid:
代码语言:javascript
复制
https_port server1.com:443 cert=/etc/ssl/server1.pem vhost
https_port server2.com:443 cert=/etc/ssl/server2.pem vhost

cache_peer mylanip1 parent 80 0 name=lanip1 no-query originserver
cache_peer_domain lanip1 server1.com

cache_peer mylanip2 parent 80 0 name=lanip2 no-query originserver
cache_peer_domain lanip2 server2.com

如果您在具有通配符证书的域的子域上有服务器(例如s1.myserver.com、s2.myserver.com、*.myserver.com证书),情况会更好。那么您可以只使用一个https_port条目。

代码语言:javascript
复制
https_port 443 cert=/etc/ssl/wildcard.myserver.com.pem vhost

所以在乌贼身上是有可能的。

但是这种简单的情况对于httpd和基于名称的虚拟主机来说要容易得多。你将拯救一个公共IP。在Centos 6中,openssl和httpd版本支持SNI。从openssl版本中可以看到它。(见这里这里)

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

https://serverfault.com/questions/555582

复制
相关文章

相似问题

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