20.2. Squid 代理
20.2.1. 安装和配置 Squid 代理
概述
这部分论述了如何在客户门户网站中安装和配置 Squid 代理。Squid 代理服务器被用作内容加速器。它缓存经常查看的内容,减少带宽并缩短响应时间。
过程 20.4. 配置 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
重要您必须在证书区分名称中包含引号。node 选项可确保私钥没有加密,这意味着您不需要输入密码来启动代理服务器。该命令生成两个文件: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 cache_peer_access engine allow all ssl_bump allow all http_access allow all
- 重启 Squid 代理服务器:
# systemctl restart squid.service
- 使用完整的 URL 连接到客户门户网站,例如:
https://proxy.example.com/UserPortal/org.ovirt.engine.ui.userportal.UserPortal/UserPortal.html
注意较短的 URL (如https://proxy.example.com/UserPortal
)将无法正常工作。这些较短的 URL 由应用服务器使用 302 响应代码和 Location 标头重定向到长 URL。Red Hat Enterprise Linux 中的 Squid 版本不支持重写这些标头。
注意
默认配置中的 Squid 代理将在 15 个空闲分钟后终止其连接。要在 Squid 代理终止闲置连接前增加时间,请调整
squid.conf
中的 read_timeout
选项(例如 read_timeout 10 hours
)。