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
# openssl x509 -in /etc/pki/ovirt-engine/ca.pem -noout -subject
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令输出类似如下的内容:subject= /C=US/O=Example Inc./CN=engine.example.com.81108
subject= /C=US/O=Example Inc./CN=engine.example.com.81108
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此处的相关部分为/C=US/O=Example Inc.
。使用它为代理的证书构建完整的可分辨名称:/C=US/O=Example Inc./CN=proxy.example.com
/C=US/O=Example Inc./CN=proxy.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 登录到代理机器并生成证书签名请求:
openssl req -newkey rsa:2048 -subj '/C=US/O=Example Inc./CN=proxy.example.com' -nodes -keyout proxy.key -out proxy.req
# openssl req -newkey rsa:2048 -subj '/C=US/O=Example Inc./CN=proxy.example.com' -nodes -keyout proxy.key -out proxy.req
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要您必须在证书区分名称中包含引号。node 选项可确保私钥没有加密,这意味着您不需要输入密码来启动代理服务器。该命令生成两个文件:proxy.key
和proxy.req
。proxy.key
是私钥。保持此文件安全。proxy.req
是证书签名请求。proxy.req
不需要任何特殊保护。 - 要生成签名证书,请将证书签名请求文件从代理机器复制到 Manager 机器:
scp proxy.req engine.example.com:/etc/pki/ovirt-engine/requests/.
# scp proxy.req engine.example.com:/etc/pki/ovirt-engine/requests/.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 登录到 Manager 机器并签署证书:
/usr/share/ovirt-engine/bin/pki-enroll-request.sh --name=proxy --days=3650 --subject='/C=US/O=Example Inc./CN=proxy.example.com'
# /usr/share/ovirt-engine/bin/pki-enroll-request.sh --name=proxy --days=3650 --subject='/C=US/O=Example Inc./CN=proxy.example.com'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这签署证书,并使其在 10 年内有效(3650 天)。如果您愿意,将证书设置为更早的过期。 - 生成的证书文件位于
/etc/pki/ovirt-engine/certs
目录中,应命名为proxy.cer
。在代理机器上,将此文件从 Manager 机器复制到当前目录中:scp engine.example.com:/etc/pki/ovirt-engine/certs/proxy.cer .
# scp engine.example.com:/etc/pki/ovirt-engine/certs/proxy.cer .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 确保代理机器上存在
proxy.key
和proxy.cer
:ls -l proxy.key proxy.cer
# ls -l proxy.key proxy.cer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在代理机器上安装 Squid 代理服务器软件包:
yum install squid
# yum install squid
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将私钥和签名证书移到代理可以访问的位置
,例如
:cp proxy.key proxy.cer /etc/squid/.
# cp proxy.key proxy.cer /etc/squid/.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 设置权限,以便
squid
用户可以读取这些文件:chgrp squid /etc/squid/proxy.* chmod 640 /etc/squid/proxy.*
# chgrp squid /etc/squid/proxy.* # chmod 640 /etc/squid/proxy.*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Squid 代理必须验证引擎使用的证书。将 Manager 证书复制到代理机器中。这个示例使用文件路径
/etc/squid
:scp engine.example.com:/etc/pki/ovirt-engine/ca.pem /etc/squid/.
# scp engine.example.com:/etc/pki/ovirt-engine/ca.pem /etc/squid/.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意默认 CA 证书位于 Manager 机器的/etc/pki/ovirt-engine/ca.pem
中。 - 设置权限,以便
squid
用户可以读取证书文件:chgrp squid /etc/squid/ca.pem chmod 640 /etc/squid/ca.pem
# chgrp squid /etc/squid/ca.pem # chmod 640 /etc/squid/ca.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果 SELinux 处于 enforcing 模式,使用 semanage 工具更改端口 443 上下文,以允许 Squid 使用端口 443:
yum install policycoreutils-python semanage port -m -p tcp -t http_cache_port_t 443
# yum install policycoreutils-python # semanage port -m -p tcp -t http_cache_port_t 443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用以下内容替换现有的 Squid 配置文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重启 Squid 代理服务器:
systemctl restart squid.service
# systemctl restart squid.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用完整的 URL 连接到客户门户网站,例如:
https://proxy.example.com/UserPortal/org.ovirt.engine.ui.userportal.UserPortal/UserPortal.html
https://proxy.example.com/UserPortal/org.ovirt.engine.ui.userportal.UserPortal/UserPortal.html
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意较短的 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
)。