第 2 章 在 CUPS 服务器上配置 TLS 加密


CUPS 支持 TLS 加密的连接,默认情况下,该服务为所有需要身份验证的请求强制实施加密连接。如果没有配置证书,CUPS 会创建一个私钥和自签名证书。只有在从本地主机本身访问 CUPS 时,这才足够。对于通过网络的安全连接,请使用由证书颁发机构(CA)签名的服务器证书。

警告

如果没有加密或使用自签名证书,则中间人(MITM)攻击可以披露,例如:

  • 使用 Web 界面配置 CUPS 时管理员的凭证
  • 在通过网络发送打印作业时的机密数据

先决条件

  • CUPS 已配置
  • 您创建了一个私钥,CA 为其发布了一个服务器证书。
  • 如果需要中间证书来验证服务器证书,请将中间证书附加到服务器证书中。
  • 私钥不受密码保护,因为 CUPS 在服务读取密钥时不提供输入密码的选项。
  • 证书中的规范名称(CN)或主题替代名称(SAN)字段与以下之一匹配:

    • CUPS 服务器的完全限定域名(FQDN)
    • DNS 解析为服务器 IP 地址的别名
  • 私钥和服务器证书文件使用 Privacy Enhanced Mail (PEM)格式。
  • 客户端信任 CA 证书。
  • 如果服务器运行 RHEL 9.2 或更高版本,并且启用了 FIPS 模式,客户端必须支持 Extended Master Secret (EMS)扩展或使用 TLS 1.3。没有 EMS 的 TLS 1.2 连接会失败。如需更多信息,请参阅红帽知识库解决方案 TLS 扩展"扩展主 Secret "。

流程

  1. 编辑 /etc/cups/cups-files.conf 文件,并添加以下设置来禁用自签名证书的自动创建:

    CreateSelfSignedCerts no
    Copy to Clipboard Toggle word wrap
  2. 删除自签名证书和私钥:

    # rm /etc/cups/ssl/<hostname>.crt /etc/cups/ssl/<hostname>.key
    Copy to Clipboard Toggle word wrap
  3. 可选:显示服务器的 FQDN:

    # hostname -f
    server.example.com
    Copy to Clipboard Toggle word wrap
  4. 可选:显示证书的 CN 和 SAN 字段:

    # openssl x509 -text -in /etc/cups/ssl/server.example.com.crt
    Certificate:
      Data:
        ...
        Subject: CN = server.example.com
        ...
        X509v3 extensions:
          ...
          X509v3 Subject Alternative Name:
            DNS:server.example.com
      ...
    Copy to Clipboard Toggle word wrap
  5. 如果服务器证书中的 CN 或 SAN 字段包含与服务器的 FQDN 不同的别名,请将 ServerAlias 参数添加到 /etc/cups/cupsd.conf 文件中:

    ServerAlias alternative_name.example.com
    Copy to Clipboard Toggle word wrap

    在这种情况下,使用替代名称而不是流程其余部分中的 FQDN。

  6. 将私钥和服务器证书存储在 /etc/cups/ssl/ 目录中,例如:

    # mv /root/server.key /etc/cups/ssl/server.example.com.key
    # mv /root/server.crt /etc/cups/ssl/server.example.com.crt
    Copy to Clipboard Toggle word wrap
    重要

    CUPS 要求您将私钥命名私钥 <fqdn>.key 和服务器证书文件 < fqdn>.crt。如果使用别名,则必须命名文件 <alias>.key<alias>.crt

  7. 在私钥上设置安全权限,使只有 root 用户能够读取此文件:

    # chown root:root /etc/cups/ssl/server.example.com.key
    # chmod 600 /etc/cups/ssl/server.example.com.key
    Copy to Clipboard Toggle word wrap

    因为证书是客户端和服务器之间在建立安全连接之前通信的一部分,所以,任何客户端都可以检索证书,而不需要身份验证。因此,您不需要对服务器证书文件设置严格的权限。

  8. 恢复 SELinux 上下文:

    # restorecon -Rv /etc/cups/ssl/
    Copy to Clipboard Toggle word wrap
  9. 默认情况下,CUPS 仅在任务需要身份验证时才强制实施加密连接,例如在 web 界面中对 /admin 页面执行管理任务时。

    要为整个 CUPS 服务器强制实施加密,请将 Encryption Required 添加到 /etc/cups/cupsd.conf 文件中的所有 <Location> 指令中,例如:

    <Location />
      ...
      Encryption Required
    </Location>
    Copy to Clipboard Toggle word wrap
  10. 重启 CUPS:

    # systemctl restart cups
    Copy to Clipboard Toggle word wrap

验证

  1. 使用浏览器并访问 https://<hostname>:631/admin/。如果连接成功,您可以在 CUPS 中正确配置 TLS 加密。
  2. 如果需要为整个服务器配置该加密,请访问 http://<hostname>:631/。本例中,CUPS 返回一个 Upgrade Required 错误。

故障排除

  • 显示 cups 服务的 systemd 日志条目:

    # journalctl -u cups
    Copy to Clipboard Toggle word wrap

    在使用 HTTPS 协议无法连接到 Web 界面后,如果日志包含 Unable to encrypt connection: Error while reading file 错误,请验证私钥和服务器证书文件的名称。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat