E.2. squid Proxy
E.2.1. 安装和配置 Squid 代理
这部分论述了如何在虚拟机门户中安装和配置 Squid 代理。Squid 代理服务器用作内容加速器。它缓存经常查看的内容,减少了带宽并改进响应时间。
配置 Squid 代理
获取 Squid 代理服务器的 HTTPS 端口的密钥对和证书。您可以像获取另一个 SSL/TLS 服务的密钥对一样获得此密钥对。密钥对采用两个 PEM 文件的形式,其中包含私钥和签名证书。对于这个步骤,我们假定它们名为 proxy.key 和 proxy.cer。
注意密钥对和证书也可以使用引擎的证书颁发机构生成。如果您已有代理的私钥和证书,并且不想使用引擎证书颁发机构生成它,请跳至下一步。
为代理选择主机名。然后,选择代理的可识别证书名称的其他组件。
注意最好使用由引擎本身使用的相同国家和相同的组织名称。登录到安装 Manager 并运行以下命令的机器,查找此信息:
# openssl x509 -in /etc/pki/ovirt-engine/ca.pem -noout -subject
这个命令输出如下:
subject= /C=US/O=Example Inc./CN=engine.example.com.81108
此处的相关部分为 /C=US/O=Example Inc.。使用它来为代理构建证书的完整可分辨名称:
/C=US/O=Example Inc./CN=proxy.example.com
登录到代理机器并生成证书签名请求:
# openssl req -newkey rsa:2048 -subj '/C=US/O=Example Inc./CN=proxy.example.com' -nodes -keyout proxy.key -out proxy.req
重要您必须包括与证书可分辨名称相关的引号。
-nodes
选项确保私钥没有加密,这意味着您不需要输入密码才能启动代理服务器。该命令生成两个文件: proxy.key 和 proxy.req。proxy.key 是私钥。使此文件保持安全。proxy.req 是证书签名请求。proxy.req 不需要任何特殊保护。
要生成签名证书,请将代理机器中的证书签名请求文件复制到 Manager 机器:
# scp proxy.req engine.example.com:/etc/pki/ovirt-engine/requests/.
登录到 Manager 机器并签署证书:
# /usr/share/ovirt-engine/bin/pki-enroll-request.sh --name=proxy --days=3650 --subject='/C=US/O=Example Inc./CN=proxy.example.com'
这为证书签名,并使其有效期为 10 年(3650 天)。如果您愿意,将证书设置为更早过期。
生成的证书文件位于 /etc/pki/ovirt-engine/certs 目录,并且应命名为 proxy.cer。在代理机器中,将此文件从 Manager 机器复制到您的当前目录中:
# scp engine.example.com:/etc/pki/ovirt-engine/certs/proxy.cer .
确保代理机器上存在 proxy.key 和 proxy.cer :
# ls -l proxy.key proxy.cer
在代理机器上安装 Squid 代理服务器软件包:
# yum install squid
将私钥和签名证书移到代理可以访问它们的位置,例如 :
# cp proxy.key proxy.cer /etc/squid/.
设置权限,以便
squid
用户可以读取这些文件:# chgrp squid /etc/squid/proxy.* # chmod 640 /etc/squid/proxy.*
Squid 代理必须验证引擎使用的证书。将 Manager 证书复制到代理机器中。这个示例使用文件路径 /etc/squid :
# scp engine.example.com:/etc/pki/ovirt-engine/ca.pem /etc/squid/.
注意默认 CA 证书位于 Manager 机器的 /etc/pki/ovirt-engine/ca.pem 中。
设置权限,以便
squid
用户可以读取证书文件:# chgrp squid /etc/squid/ca.pem # chmod 640 /etc/squid/ca.pem
如果 SELinux 处于 enforcing 模式,使用
semanage
工具将端口 443 上下文更改为允许 Squid 使用端口 443:# yum install policycoreutils-python # semanage port -m -p tcp -t http_cache_port_t 443
使用以下内容替换现有的 Squid 配置文件:
https_port 443 key=/etc/squid/proxy.key cert=/etc/squid/proxy.cer ssl-bump defaultsite=engine.example.com cache_peer engine.example.com parent 443 0 no-query originserver ssl sslcafile=/etc/squid/ca.pem name=engine login=PASSTHRU cache_peer_access engine allow all ssl_bump allow all http_access allow all
重启 Squid 代理服务器:
# systemctl restart squid.service
默认配置中的 Squid Proxy 会在 15 idle 分钟后终止其连接。要在 Squid 代理终止闲置连接前增加时间量,请调整 squid.conf 中的 read_timeout
选项(用于实例 read_timeout 10 小时)。