Red Hat Training

A Red Hat training course is available for Red Hat Virtualization

20.2. Squid 代理

20.2.1. 安装和配置 Squid 代理

概述

这部分论述了如何在客户门户网站中安装和配置 Squid 代理。Squid 代理服务器被用作内容加速器。它缓存经常查看的内容,减少带宽并缩短响应时间。

过程 20.4. 配置 Squid 代理

  1. 为 Squid 代理服务器的 HTTPS 端口获取密钥对和证书。您可以像为另一个 SSL/TLS 服务获取密钥对一样获取此密钥对。密钥对采用两种 PEM 文件的形式,其中包含私钥和签名证书。对于此过程,我们假设它们名为 proxy.keyproxy.cer
    注意
    密钥对和证书也可以使用引擎的证书颁发机构来生成。如果您已有代理的私钥和证书,且不想使用引擎证书颁发机构生成它,请跳至下一步。
  2. 为代理选择主机名。然后,选择代理的可分辨名称的其他组件。
    注意
    最好使用相同的国家和引擎本身使用的相同组织名称。登录到安装 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
  3. 登录到代理机器并生成证书签名请求:
    # openssl req -newkey rsa:2048 -subj '/C=US/O=Example Inc./CN=proxy.example.com' -nodes -keyout proxy.key -out proxy.req
    
    重要
    您必须在证书区分名称中包含引号。node 选项可确保私钥没有加密,这意味着您不需要输入密码来启动代理服务器。
    该命令生成两个文件: proxy.keyproxy.reqproxy.key 是私钥。保持此文件安全。proxy.req 是证书签名请求。proxy.req 不需要任何特殊保护。
  4. 要生成签名证书,请将证书签名请求文件从代理机器复制到 Manager 机器:
    # scp proxy.req engine.example.com:/etc/pki/ovirt-engine/requests/.
    
  5. 登录到 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 天)。如果您愿意,将证书设置为更早的过期。
  6. 生成的证书文件位于 /etc/pki/ovirt-engine/certs 目录中,应命名为 proxy.cer。在代理机器上,将此文件从 Manager 机器复制到当前目录中:
    # scp engine.example.com:/etc/pki/ovirt-engine/certs/proxy.cer .
    
  7. 确保代理机器上存在 proxy.keyproxy.cer
    # ls -l proxy.key proxy.cer
    
  8. 在代理机器上安装 Squid 代理服务器软件包:
    # yum install squid
    
  9. 将私钥和签名证书移到代理可以访问的位置 ,例如
    # cp proxy.key proxy.cer /etc/squid/.
    
  10. 设置权限,以便 squid 用户可以读取这些文件:
    # chgrp squid /etc/squid/proxy.*
    # chmod 640 /etc/squid/proxy.*
    
  11. Squid 代理必须验证引擎使用的证书。将 Manager 证书复制到代理机器中。这个示例使用文件路径 /etc/squid
    # scp engine.example.com:/etc/pki/ovirt-engine/ca.pem /etc/squid/.
    
    注意
    默认 CA 证书位于 Manager 机器的 /etc/pki/ovirt-engine/ca.pem 中。
  12. 设置权限,以便 squid 用户可以读取证书文件:
    # chgrp squid /etc/squid/ca.pem
    # chmod 640 /etc/squid/ca.pem
    
  13. 如果 SELinux 处于 enforcing 模式,使用 semanage 工具更改端口 443 上下文,以允许 Squid 使用端口 443:
    # yum install policycoreutils-python
    # semanage port -m -p tcp -t http_cache_port_t 443
    
  14. 使用以下内容替换现有的 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
    
  15. 重启 Squid 代理服务器:
    # systemctl restart squid.service
    
  16. 使用完整的 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)。