E.2. squid Proxy

E.2.1. 安装和配置 Squid 代理

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

配置 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
    重要

    您必须包括与证书可分辨名称相关的引号。-nodes 选项确保私钥没有加密,这意味着您不需要输入密码才能启动代理服务器。

    该命令生成两个文件: 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 login=PASSTHRU
    cache_peer_access engine allow all
    ssl_bump allow all
    http_access allow all
  15. 重启 Squid 代理服务器:

    # systemctl restart squid.service
注意

默认配置中的 Squid Proxy 会在 15 idle 分钟后终止其连接。要在 Squid 代理终止闲置连接前增加时间量,请调整 squid.conf 中的 read_timeout 选项(用于实例 read_timeout 10 小时)。