2.3. 在 NGINX web 服务器中添加 TLS 加密


您可以在 NGINX web 服务器上为example.com 域启用 TLS 加密。

先决条件

  • NGINX 已安装。
  • 私钥存储在 /etc/pki/tls/private/example.com.key 文件中。

    有关创建私钥和证书签名请求(CSR)的详细信息,以及如何从证书颁发机构(CA)请求证书,请参阅您的 CA 文档。

  • TLS 证书存储在/etc/pki/tls/certs/example.com.crt文件中。如果您使用其他路径,请调整该流程的对应步骤。
  • CA 证书已附加到服务器的 TLS 证书文件中。
  • 客户端和网页服务器会将服务器的主机名解析为 web 服务器的 IP 地址。
  • 在本地防火墙中打开端口443
  • 如果服务器运行 RHEL 9.2 或更高版本,并且启用了 FIPS 模式,则客户端必须支持 Extended Master Secret(EMS)扩展或使用 TLS 1.3。没有 EMS 的 TLS 1.2 连接会失败。如需更多信息,请参阅红帽知识库解决方案 TLS 扩展"扩展主 Secret "。

流程

  1. 编辑 /etc/nginx/nginx.conf文件,并将以下server块添加到配置中的http块中:

    server {
        listen              443 ssl;
        server_name         example.com;
        root                /usr/share/nginx/html;
        ssl_certificate     /etc/pki/tls/certs/example.com.crt;
        ssl_certificate_key /etc/pki/tls/private/example.com.key;
    }
  2. 可选:从 RHEL 9.3 开始,您可以使用 ssl_pass_phrase_dialog 指令为每个加密私钥配置一个在 nginx 启动时调用的外部程序。向 /etc/nginx/nginx.conf 文件中添加以下行:

    • 要为每个加密的私钥文件调用外部程序,请输入:

      ssl_pass_phrase_dialog exec:<path_to_program>;

      NGINX 使用以下两个参数调用该程序:

      • 服务器名称在 server_name 设置中指定。
      • 以下一种算法之一:RSADSAECDHUNK(如果无法识别加密算法)。
    • 如果要为每个加密的私钥文件手动输入密码短语,请输入:

      ssl_pass_phrase_dialog builtin;

      如果没有配置 ssl_pass_phrase_dialog,这是默认行为。

      注意

      如果使用此方法,但至少有一个私钥受密码保护,则 nginx 服务无法启动。在这种情况下,请使用其它方法。

    • 如果您希望 systemd 在使用 systemctl 工具启动 nginx 服务时对每个加密的私钥提示输入密码短语,请输入:

      ssl_pass_phrase_dialog exec:/usr/libexec/nginx-ssl-pass-dialog;
  3. 出于安全考虑,配置成只有 root 用户才可以访问私钥文件:

    # chown root:root /etc/pki/tls/private/example.com.key
    # chmod 600 /etc/pki/tls/private/example.com.key
    警告

    如果私钥被设置为可以被未授权的用户访问,则需要撤销证书,然后再创建一个新私钥并请求一个新证书。否则,TLS 连接就不再安全。

  4. 重启nginx服务:

    # systemctl restart nginx

验证

  • 使用浏览器连接到https://example.com
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.