在 Linux 上使用 NGINX 或 Apache 和 OpenSSL 进行 AWS CloudHSM SSL/TLS 分载 - AWS CloudHSM

在 Linux 上使用 NGINX 或 Apache 和 OpenSSL 进行 AWS CloudHSM SSL/TLS 分载

本主题提供了有关在 Linux Web 服务器上设置借助 AWS CloudHSM 进行 SSL/TLS 分载的分步说明。

概述

在 Linux 上,NGINXApache HTTP Server Web 服务器软件与 OpenSSL 集成以支持 HTTPS。适用于 OpenSSL 的 AWS CloudHSM 动态引擎提供了一个接口,使 Web 服务器软件能够使用您群集中的 HSM 进行加密分载和密钥存储。OpenSSL 引擎是连接 Web 服务器与您的 AWS CloudHSM 群集的桥梁。

要完成本教程,您必须先选择在 Linux 上使用 NGINX 还是 Apache Web 服务器软件。然后,本教程将介绍如何执行以下操作:

  • 在 Amazon EC2 实例上安装 Web 服务器软件。

  • 使用存储在您的 AWS CloudHSM 集群中的私有密钥将 Web 服务器软件配置为支持 HTTPS。

  • (可选)使用 Amazon EC2 创建第二个 Web 服务器实例,并使用 Elastic Load Balancing 创建负载均衡器。使用负载均衡器可以在多台服务器中分配负载,从而提高性能。它还能在一台或多台服务器发生故障的情况下提供冗余和更高的可用性。

在您准备好开始使用后,请转到 步骤 1:设置先决条件

步骤 1:设置先决条件

不同的平台需要不同的先决条件。请使用以下与您的平台匹配的先决条件部分。

客户端软件开发工具包 5 的先决条件

要使用客户端软件开发工具包 5 设置 Web 服务器 SSL/TLS 分载,需要满足以下条件:

  • 至少有两个硬件安全模块(HSM)的活动 AWS CloudHSM 集群

    注意

    您可以使用单个 HSM 集群,但您必须首先禁用客户端密钥持久性。有关更多信息,请参阅管理客户端密钥持久性设置客户端软件开发工具包 5 配置工具

  • 一个运行已安装以下软件的 Linux 操作系统的 Amazon EC2 实例:

    • Web 服务器(NGINX 或 Apache)

    • 使用适用于客户端软件开发工具包 5 的 OpenSSL 动态引擎

  • 一个加密用户(CU),该用户拥有和管理 HSM 上的 Web 服务器的私有密钥。

在 HSM 上设置 Linux Web 服务器实例并创建 CU
  1. 为 AWS CloudHSM 安装和配置 OpenSSL 动态引擎 有关安装 OpenSSL 动态引擎的更多信息,请参阅适用于客户端软件开发工具包 5 的 OpenSSL 动态引擎

  2. 在可以访问您的集群的 EC2 Linux 实例上,安装 NGINX 或 Apache Web 服务器:

    Amazon Linux
    • NGINX

      $ sudo yum install nginx
    • Apache

      $ sudo yum install httpd24 mod24_ssl
    Amazon Linux 2
    • 有关如何在 Amazon Linux 2 上下载最新版本的 NGINX 的信息,请访问 NGINX 网站

      适用于 Amazon Linux 2 最新版本的 NGINX 所使用的 OpenSSL 版本比 OpenSSL 的系统版本更新。安装 NGINX 后,您需要创建一个从 AWS CloudHSMOpenSSL 动态引擎库到此版本的 OpenSSL 所期望位置的符号链接

      $ sudo ln -sf /opt/cloudhsm/lib/libcloudhsm_openssl_engine.so /usr/lib64/engines-1.1/cloudhsm.so
    • Apache

      $ sudo yum install httpd mod_ssl
    CentOS 7
    • 有关如何在 CentOS 7 上下载最新版本 NGINX 的信息,请访问 NGINX 网站

      适用于 CentOS 7 的最新版本 NGINX 所使用的 OpenSSL 版本比 OpenSSL 的系统版本更新。安装 NGINX 后,您需要创建一个从 AWS CloudHSM OpenSSL 动态引擎库到此版本的 OpenSSL 所期望位置的符号链接

      $ sudo ln -sf /opt/cloudhsm/lib/libcloudhsm_openssl_engine.so /usr/lib64/engines-1.1/cloudhsm.so
    • Apache

      $ sudo yum install httpd mod_ssl
    Red Hat 7
    • 有关如何在 Red Hat 7 上下载最新版本 NGINX 的信息,请访问 NGINX 网站

      适用于 Red Hat 7 的最新版本 NGINX 所使用的 OpenSSL 版本比 OpenSSL 的系统版本更新。安装 NGINX 后,您需要创建一个从 AWS CloudHSM OpenSSL 动态引擎库到此版本的 OpenSSL 所期望位置的符号链接

      $ sudo ln -sf /opt/cloudhsm/lib/libcloudhsm_openssl_engine.so /usr/lib64/engines-1.1/cloudhsm.so
    • Apache

      $ sudo yum install httpd mod_ssl
    CentOS 8
    • NGINX

      $ sudo yum install nginx
    • Apache

      $ sudo yum install httpd mod_ssl
    Red Hat 8
    • NGINX

      $ sudo yum install nginx
    • Apache

      $ sudo yum install httpd mod_ssl
    Ubuntu 18.04
    • NGINX

      $ sudo apt install nginx
    • Apache

      $ sudo apt install apache2
    Ubuntu 20.04
    • NGINX

      $ sudo apt install nginx
    • Apache

      $ sudo apt install apache2
    Ubuntu 22.04

    尚不支持 OpenSSL 动态引擎。

  3. 使用 CloudHSM CLI 创建加密用户(CU)。有关管理 HSM 用户的更多信息,请参阅使用 CloudHSM CLI 管理 HSM 用户

    提示

    跟踪 CU 用户名和密码。您稍后为 Web 服务器生成或导入 HTTPS 私有密钥和证书时需要它们。

完成这些步骤后,请转到 步骤 2:生成或导入私有密钥和 SSL/TLS 证书

注意
  • 要使用安全增强型 Linux (SELinux) 和 Web 服务器,必须允许端口 2223 上的出站 TCP 连接,这是客户端软件开发工具包 5 用于与 HSM 通信的端口。

  • 要创建和激活集群并授予 EC2 实例访问该集群的权限,请完成入门AWS CloudHSM的步骤。该入门提供了使用一个 HSM 和一个 Amazon EC2 客户端实例创建活动集群的分步说明。您可使用此客户端实例作为您的 Web 服务器。

  • 为避免禁用客户端密钥持久性,请向集群添加多个 HSM。有关更多信息,请参阅 向 AWS CloudHSM 集群添加 HSM

  • 要连接到客户端实例,可以使用 SSH 或 PuTTY。有关更多信息,请参阅 Amazon EC2 文档中的使用 SSH 连接到您的 Linux 实例使用 PuTTY 从 Windows 连接到您的 Linux 实例

客户端软件开发工具包 3 的先决条件

要使用客户端软件开发工具包 3 设置 Web 服务器 SSL/TLS 分载,需要满足以下条件:

  • 一个带至少一个 HSM 的活动 AWS CloudHSM 群集。

  • 一个运行已安装以下软件的 Linux 操作系统的 Amazon EC2 实例:

    • AWS CloudHSM 客户端和命令行工具。

    • NGINX 或 Apache Web 服务器应用程序。

    • 适用于 OpenSSL 的 AWS CloudHSM 动态引擎。

  • 一个加密用户(CU),该用户拥有和管理 HSM 上的 Web 服务器的私有密钥。

在 HSM 上设置 Linux Web 服务器实例并创建 CU
  1. 完成入门中的步骤。您随后将拥有一个带一个 HSM 的活动集群以及一个 Amazon EC2 客户端实例。您的 EC2 实例将用命令行工具进行配置。使用此客户端实例作为您的 Web 服务器。

  2. 连接到您的客户端实例。有关更多信息,请参阅 Amazon EC2 文档中的使用 SSH 连接到您的 Linux 实例使用 PuTTY 从 Windows 连接到您的 Linux 实例

  3. 在可以访问您的集群的 EC2 Linux 实例上,安装 NGINX 或 Apache Web 服务器:

    Amazon Linux
    • NGINX

      $ sudo yum install nginx
    • Apache

      $ sudo yum install httpd24 mod24_ssl
    Amazon Linux 2
    CentOS 7
    Red Hat 7
    Ubuntu 16.04
    • NGINX

      $ sudo apt install nginx
    • Apache

      $ sudo apt install apache2
    Ubuntu 18.04
    • NGINX

      $ sudo apt install nginx
    • Apache

      $ sudo apt install apache2
  4. (可选) 向您的集群添加更多 HSM。有关更多信息,请参阅 向 AWS CloudHSM 集群添加 HSM

  5. 使用 cloudhsm_mgmt_util 创建 CU。有关更多信息,请参阅 HSM 用户。跟踪 CU 用户名和密码。您稍后为 Web 服务器生成或导入 HTTPS 私有密钥和证书时需要它们。

完成这些步骤后,请转到 步骤 2:生成或导入私有密钥和 SSL/TLS 证书

步骤 2:生成或导入私有密钥和 SSL/TLS 证书

要启用 HTTPS,您的 Web 服务器应用程序(NGINX 或 Apache)需要一个私有密钥和相应的 SSL/TLS 证书。要使用 Web 服务器借助 AWS CloudHSM 进行 SSL/TLS 分载功能,您必须将私有密钥存储在 AWS CloudHSM 群集的 HSM 中。您可以通过下列方式之一来完成此操作:

  • 如果您没有私有密钥及相应的证书,则可以在 HSM 中生成私有密钥。使用私有密钥创建证书签名请求(CSR),并用它来创建 SSL/TLS 证书。

  • 如果您已经有私有密钥及相应的证书,则可以将私有密钥导入到 HSM。

无论您选择上述哪种方法,您都可以从 HSM 中导出一个假 PEM 私有密钥,该私有密钥是 PEM 格式的私有密钥文件,其中包含对存储在 HSM 上的私有密钥的引用(它不是真正的私有密钥)。在 SSL/TLS 分载期间,您的 Web 服务器使用伪造的 PEM 私有密钥文件来识别 HSM 上的私有密钥。

生成私有密钥和证书

生成私有密钥

本节将介绍如何使用客户端软件开发工具包 3 中的密钥管理实用程序(KMU) 生成密钥对。在 HSM 中生成密钥对后,即可将其导出为伪造 PEM 文件,并生成相应的证书。

使用密钥管理实用程序(KMU)生成的私有密钥可以与客户端软件开发工具包 3 和客户端软件开发工具包 5 一起使用。

安装和配置密钥管理实用程序(KMU)
  1. 连接到您的客户端实例。

  2. 安装和配置客户端软件开发工具包 3。

  3. 运行以下命令以启动 AWS CloudHSM 客户端。

    Amazon Linux
    $ sudo start cloudhsm-client
    Amazon Linux 2
    $ sudo service cloudhsm-client start
    CentOS 7
    $ sudo service cloudhsm-client start
    CentOS 8
    $ sudo service cloudhsm-client start
    RHEL 7
    $ sudo service cloudhsm-client start
    RHEL 8
    $ sudo service cloudhsm-client start
    Ubuntu 16.04 LTS
    $ sudo service cloudhsm-client start
    Ubuntu 18.04 LTS
    $ sudo service cloudhsm-client start
    Ubuntu 20.04 LTS
    $ sudo service cloudhsm-client start
    Ubuntu 22.04 LTS

    尚不支持 OpenSSL 动态引擎。

  4. 运行命令以启动 key_mgmt_util 命令行工具。

    $ /opt/cloudhsm/bin/key_mgmt_util
  5. 运行以下命令登录 HSM。将 <user name><password> 替换为加密用户 (CU) 的用户名和密码。

    Command: loginHSM -u CU -s <user name> -p <password>>

生成私有密钥

根据您的使用案例,您可以生成 RSA 或 EC 密钥对。请执行以下操作之一:

  • 在 HSM 上生成 RSA 私有密钥

    使用 genRSAKeyPair 命令生成 RSA 密钥对。此示例生成一个模数为 2048、公有指数为 65537、标签为 tls_rsa_keypair 的 RSA 密钥对。

    Command: genRSAKeyPair -m 2048 -e 65537 -l tls_rsa_keypair

    如果命令成功,则您应该看到以下表明您已成功生成了 RSA 密钥对的输出。

    Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS Cfm3GenerateKeyPair: public key handle: 7 private key handle: 8 Cluster Status: Node id 1 status: 0x00000000 : HSM Return: SUCCESS
  • 在 HSM 上生成 EC 私有密钥

    使用 genECCKeyPair 命令生成 EC 密钥对。此示例生成一个曲线 ID 为 2(对应 NID_X9_62_prime256v1 曲线)且标签为 tls_ec_keypair 的 EC 密钥对。

    Command: genECCKeyPair -i 2 -l tls_ec_keypair

    如果命令成功,则您应该看到以下表明您已成功生成了 EC 密钥对的输出。

    Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS Cfm3GenerateKeyPair: public key handle: 7 private key handle: 8 Cluster Status: Node id 1 status: 0x00000000 : HSM Return: SUCCESS

导出假 PEM 私有密钥文件

在 HSM 上拥有私有密钥后,您必须导出一个假 PEM 私有密钥文件。此文件不包含真密钥数据,但它允许 OpenSSL 动态引擎识别 HSM 上的私有密钥。您随后可以使用私有密钥创建证书签名请求(CSR),并签署 CSR 以创建证书。

注意

使用密钥管理实用程序(KMU)生成的伪造 PEM 文件可以与客户端软件开发工具包 3 和客户端软件开发工具包 5 一起使用。

识别与您要导出为假 PEM 的密钥对应的密钥句柄,然后运行以下命令以假 PEM 格式导出私有密钥并将其保存到文件中。将以下值替换为您自己的值。

  • <private_key_handle> – 生成的私有密钥的句柄。此句柄由上一步的密钥生成命令之一生成。在上一示例中,私有密钥的句柄为 8。

  • <web_server_fake_PEM.key> –写入假 PEM 密钥的文件名称。

Command: getCaviumPrivKey -k <private_key_handle> -out <web_server_fake_PEM.key>

Exit

运行以下命令停止 key_mgmt_util。

Command: exit

现在,您的系统上应该有一个新文件,该文件位于前述命令中<web_server_fake_PEM.key>所指定的路径。此文件是假 PEM 私有密钥文件。

生成自签名证书

生成伪造 PEM 私有密钥文件后,即可使用此文件生成证书签名请求(CSR)和证书。

在生产环境中,您通常使用证书颁发机构 (CA) 通过 CSR 创建证书。测试环境无需 CA。如果您使用 CA,则请将 CSR 文件发送给他们,然后使用他们在您的适用于 HTTPS的 Web 服务器中为您提供的签名 SSL/TLS 证书。

作为使用 CA 的替代方案,您可以使用 AWS CloudHSM OpenSSL 动态引擎来创建自签名证书。自签名证书不受浏览器的信任,不应在生产环境中使用。它们可在测试环境中使用。

警告

自签名证书只应在测试环境中使用。对于生产环境,请使用更安全的方法 (如证书颁发机构) 来创建证书。

安装和配置 OpenSSL 动态引擎
  1. 连接到您的客户端实例。

  2. 要安装和配置,请执行以下操作之一:

生成证书
  1. 获取前面步骤中生成的伪造 PEM 文件的副本。

  2. 创建 CSR

    运行以下命令以使用 AWS CloudHSM OpenSSL 动态引擎创建证书签名请求 (CSR)。将 <web_server_fake_PEM.key> 替换为包含您的伪造 PEM 私有密钥的文件的名称。将 <web_server.csr> 替换为包含您的 CSR 的文件的名称。

    req 命令是交互式的。响应每个字段。字段信息将复制到您的 SSL/TLS 证书中。

    $ openssl req -engine cloudhsm -new -key <web_server_fake_PEM.key> -out <web_server.csr>
  3. 创建自签名证书

    运行以下命令以使用 AWS CloudHSM OpenSSL 动态引擎来使用您在 HSM 上的私有密钥签署您的 CSR。这会创建自签名证书。将命令中的以下值替换为您自己的值。

    • <web_server.csr> – 包含 CSR 的文件的名称。

    • <web_server_fake_PEM.key> – 包含伪造 PEM 私有密钥的文件的名称。

    • <web_server.crt> – 将包含您的 Web 服务器证书的文件的名称。

    $ openssl x509 -engine cloudhsm -req -days 365 -in <web_server.csr> -signkey <web_server_fake_PEM.key> -out <web_server.crt>

完成这些步骤后,请转到 步骤 3:配置 Web 服务器

导入现有私有密钥和证书

您可能已经有一个私有密钥和可用于 Web 服务器上的 HTTPS 的相应 SSL/TLS 证书。如果是,您可以按照本部分中的步骤将密钥导入 HSM。

注意

有关私有密钥导入和客户端软件开发工具包兼容性的一些说明:

  • 导入现有私有密钥需要客户端软件开发工具包 3。

  • 您可以结合使用客户端软件开发工具包 3 中的私有密钥与客户端软件开发工具包 5 中的私有密钥。

  • 适用于客户端软件开发工具包 3 的 OpenSSL 动态引擎不支持最新 Linux 平台,但适用于客户端软件开发工具包 5 的 OpenSSL 动态引擎的实现支持最新 Linux 平台。您可以使用客户端软件开发工具包 3 提供的密钥管理实用程序(KMU)导入现有私有密钥,然后使用该私有密钥和客户端软件开发工具包 5 的 OpenSSL 动态引擎实现来支持最新 Linux 平台上的 SSL/TLS 分载。

使用客户端软件开发工具包 3 将现有私有密钥导入到 HSM
  1. 连接到您的 Amazon EC2 客户端实例。如有必要,将您的现有私有密钥和证书复制到该实例。

  2. 安装和配置客户端软件开发工具包 3

  3. 运行以下命令以启动 AWS CloudHSM 客户端。

    Amazon Linux
    $ sudo start cloudhsm-client
    Amazon Linux 2
    $ sudo service cloudhsm-client start
    CentOS 7
    $ sudo service cloudhsm-client start
    CentOS 8
    $ sudo service cloudhsm-client start
    RHEL 7
    $ sudo service cloudhsm-client start
    RHEL 8
    $ sudo service cloudhsm-client start
    Ubuntu 16.04 LTS
    $ sudo service cloudhsm-client start
    Ubuntu 18.04 LTS
    $ sudo service cloudhsm-client start
    Ubuntu 20.04 LTS
    $ sudo service cloudhsm-client start
    Ubuntu 22.04 LTS

    尚不支持 OpenSSL 动态引擎。

  4. 运行命令以启动 key_mgmt_util 命令行工具。

    $ /opt/cloudhsm/bin/key_mgmt_util
  5. 运行以下命令登录 HSM。将 <user name><password> 替换为加密用户 (CU) 的用户名和密码。

    Command: loginHSM -u CU -s <user name> -p <password>
  6. 运行以下命令以将您的私有密钥导入到 HSM。

    1. 运行以下命令以创建仅对当前会话有效的对称包装密钥。命令和输出如下所示。

      Command: genSymKey -t 31 -s 16 -sess -l wrapping_key_for_import Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS Symmetric Key Created. Key Handle: 6 Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
    2. 运行以下命令以将您现有的私有密钥导入到 HSM。命令和输出如下所示。将以下值替换为您自己的值:

      • <web_server_existing.key> – 包含您的私有密钥的文件的名称。

      • <web_server_imported_key> – 您已导入私有密钥的标签。

      • <wrapping_key_handle> – 由上述命令生成的包装密钥句柄。在上一示例中,包装密钥句柄为 6。

      Command: importPrivateKey -f <web_server_existing.key> -l <web_server_imported_key> -w <wrapping_key_handle> BER encoded key length is 1219 Cfm3WrapHostKey returned: 0x00 : HSM Return: SUCCESS Cfm3CreateUnwrapTemplate returned: 0x00 : HSM Return: SUCCESS Cfm3UnWrapKey returned: 0x00 : HSM Return: SUCCESS Private Key Unwrapped. Key Handle: 8 Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
  7. 运行以下命令以伪造 PEM 格式导出私有密钥并将其保存到文件。将以下值替换为您自己的值。

    • <private_key_handle> – 已导入私有密钥的句柄。此句柄由上一步骤中的第二个命令生成。在上一示例中,私有密钥的句柄为 8。

    • <web_server_fake_PEM.key> – 包含您已导出伪造 PEM 私有密钥的文件的名称。

    Command: getCaviumPrivKey -k <private_key_handle> -out <web_server_fake_PEM.key>
  8. 运行以下命令停止 key_mgmt_util。

    Command: exit

完成这些步骤后,请转到 步骤 3:配置 Web 服务器

步骤 3:配置 Web 服务器

更新您的网络服务器软件的配置以使用 HTTPS 证书以及在上一步中创建的相应伪造 PEM 私有密钥。切记在开始前备份您现有的证书。这将完成 Linux网络服务器软件的设置,以便借助 AWS CloudHSM 进行 SSL/TLS 分载。

完成下述步骤之一。

配置 NGINX网络服务器

使用此部分在支持的平台上配置 NGINX。

更新 NGINX 的网络服务器配置
  1. 连接到您的客户端实例。

  2. 运行以下命令以创建网络服务器证书和伪造 PEM 私有密钥所需的目录。

    $ sudo mkdir -p /etc/pki/nginx/private
  3. 运行以下命令以将您的网络服务器证书复制到所需位置。将 <web_server.crt> 替换为您的网络服务器证书的名称。

    $ sudo cp <web_server.crt> /etc/pki/nginx/server.crt
  4. 运行以下命令以将您的伪造 PEM 私有密钥复制到所需位置。将 <web_server_fake_PEM.key> 替换为包含您的伪造 PEM 私有密钥的文件的名称。

    $ sudo cp <web_server_fake_PEM.key> /etc/pki/nginx/private/server.key
  5. 运行以下命令更改文件所有权,以便名为 nginx 的用户可读取它们。

    $ sudo chown nginx /etc/pki/nginx/server.crt /etc/pki/nginx/private/server.key
  6. 运行以下命令可备份 /etc/nginx/nginx.conf 文件。

    $ sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup
  7. 更新 NGINX 的配置。

    注意

    每个集群最多可在所有 NGINX 网络服务器上支持 1000 NGINX 工作进程。

    Amazon Linux

    使用文本编辑器编辑 /etc/nginx/nginx.conf 文件。这需要 Linux 根权限。在文件顶部,添加以下行:

    • 如果使用客户端软件开发工具包 3

      ssl_engine cloudhsm; env n3fips_password;
    • 如果使用客户端软件开发工具包 5

      ssl_engine cloudhsm; env CLOUDHSM_PIN;

    然后将以下内容添加至文件的 TLS 部分:

    # Settings for a TLS enabled server. server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name _; root /usr/share/nginx/html; ssl_certificate "/etc/pki/nginx/server.crt"; ssl_certificate_key "/etc/pki/nginx/private/server.key"; # It is *strongly* recommended to generate unique DH parameters # Generate them with: openssl dhparam -out /etc/pki/nginx/dhparams.pem 2048 #ssl_dhparam "/etc/pki/nginx/dhparams.pem"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_protocols TLSv1.2; ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA"; ssl_prefer_server_ciphers on; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
    Amazon Linux 2

    使用文本编辑器编辑 /etc/nginx/nginx.conf 文件。这需要 Linux 根权限。在文件顶部,添加以下行:

    • 如果使用客户端软件开发工具包 3

      ssl_engine cloudhsm; env n3fips_password;
    • 如果使用客户端软件开发工具包 5

      ssl_engine cloudhsm; env CLOUDHSM_PIN;

    然后将以下内容添加至文件的 TLS 部分:

    # Settings for a TLS enabled server. server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name _; root /usr/share/nginx/html; ssl_certificate "/etc/pki/nginx/server.crt"; ssl_certificate_key "/etc/pki/nginx/private/server.key"; # It is *strongly* recommended to generate unique DH parameters # Generate them with: openssl dhparam -out /etc/pki/nginx/dhparams.pem 2048 #ssl_dhparam "/etc/pki/nginx/dhparams.pem"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_protocols TLSv1.2; ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA"; ssl_prefer_server_ciphers on; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
    CentOS 7

    使用文本编辑器编辑 /etc/nginx/nginx.conf 文件。这需要 Linux 根权限。在文件顶部,添加以下行:

    • 如果使用客户端软件开发工具包 3

      ssl_engine cloudhsm; env n3fips_password;
    • 如果使用客户端软件开发工具包 5

      ssl_engine cloudhsm; env CLOUDHSM_PIN;

    然后将以下内容添加至文件的 TLS 部分:

    # Settings for a TLS enabled server. server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name _; root /usr/share/nginx/html; ssl_certificate "/etc/pki/nginx/server.crt"; ssl_certificate_key "/etc/pki/nginx/private/server.key"; # It is *strongly* recommended to generate unique DH parameters # Generate them with: openssl dhparam -out /etc/pki/nginx/dhparams.pem 2048 #ssl_dhparam "/etc/pki/nginx/dhparams.pem"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_protocols TLSv1.2; ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA"; ssl_prefer_server_ciphers on; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
    CentOS 8

    使用文本编辑器编辑 /etc/nginx/nginx.conf 文件。这需要 Linux 根权限。在文件顶部,添加以下行:

    ssl_engine cloudhsm; env CLOUDHSM_PIN;

    然后将以下内容添加至文件的 TLS 部分:

    # Settings for a TLS enabled server. server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name _; root /usr/share/nginx/html; ssl_certificate "/etc/pki/nginx/server.crt"; ssl_certificate_key "/etc/pki/nginx/private/server.key"; # It is *strongly* recommended to generate unique DH parameters # Generate them with: openssl dhparam -out /etc/pki/nginx/dhparams.pem 2048 #ssl_dhparam "/etc/pki/nginx/dhparams.pem"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA"; ssl_prefer_server_ciphers on; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
    Red Hat 7

    使用文本编辑器编辑 /etc/nginx/nginx.conf 文件。这需要 Linux 根权限。在文件顶部,添加以下行:

    • 如果使用客户端软件开发工具包 3

      ssl_engine cloudhsm; env n3fips_password;
    • 如果使用客户端软件开发工具包 5

      ssl_engine cloudhsm; env CLOUDHSM_PIN;

    然后将以下内容添加至文件的 TLS 部分:

    # Settings for a TLS enabled server. server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name _; root /usr/share/nginx/html; ssl_certificate "/etc/pki/nginx/server.crt"; ssl_certificate_key "/etc/pki/nginx/private/server.key"; # It is *strongly* recommended to generate unique DH parameters # Generate them with: openssl dhparam -out /etc/pki/nginx/dhparams.pem 2048 #ssl_dhparam "/etc/pki/nginx/dhparams.pem"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_protocols TLSv1.2; ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA"; ssl_prefer_server_ciphers on; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
    Red Hat 8

    使用文本编辑器编辑 /etc/nginx/nginx.conf 文件。这需要 Linux 根权限。在文件顶部,添加以下行:

    ssl_engine cloudhsm; env CLOUDHSM_PIN;

    然后将以下内容添加至文件的 TLS 部分:

    # Settings for a TLS enabled server. server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name _; root /usr/share/nginx/html; ssl_certificate "/etc/pki/nginx/server.crt"; ssl_certificate_key "/etc/pki/nginx/private/server.key"; # It is *strongly* recommended to generate unique DH parameters # Generate them with: openssl dhparam -out /etc/pki/nginx/dhparams.pem 2048 #ssl_dhparam "/etc/pki/nginx/dhparams.pem"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA"; ssl_prefer_server_ciphers on; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
    Ubuntu 16.04 LTS

    使用文本编辑器编辑 /etc/nginx/nginx.conf 文件。这需要 Linux 根权限。在文件顶部,添加以下行:

    ssl_engine cloudhsm; env n3fips_password;

    然后将以下内容添加至文件的 TLS 部分:

    # Settings for a TLS enabled server. server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name _; root /usr/share/nginx/html; ssl_certificate "/etc/pki/nginx/server.crt"; ssl_certificate_key "/etc/pki/nginx/private/server.key"; # It is *strongly* recommended to generate unique DH parameters # Generate them with: openssl dhparam -out /etc/pki/nginx/dhparams.pem 2048 #ssl_dhparam "/etc/pki/nginx/dhparams.pem"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_protocols TLSv1.2; ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA"; ssl_prefer_server_ciphers on; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
    Ubuntu 18.04 LTS

    使用文本编辑器编辑 /etc/nginx/nginx.conf 文件。这需要 Linux 根权限。在文件顶部,添加以下行:

    ssl_engine cloudhsm; env CLOUDHSM_PIN;

    然后将以下内容添加至文件的 TLS 部分:

    # Settings for a TLS enabled server. server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name _; root /usr/share/nginx/html; ssl_certificate "/etc/pki/nginx/server.crt"; ssl_certificate_key "/etc/pki/nginx/private/server.key"; # It is *strongly* recommended to generate unique DH parameters # Generate them with: openssl dhparam -out /etc/pki/nginx/dhparams.pem 2048 #ssl_dhparam "/etc/pki/nginx/dhparams.pem"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA"; ssl_prefer_server_ciphers on; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
    Ubuntu 20.04 LTS

    使用文本编辑器编辑 /etc/nginx/nginx.conf 文件。这需要 Linux 根权限。在文件顶部,添加以下行:

    ssl_engine cloudhsm; env CLOUDHSM_PIN;

    然后将以下内容添加至文件的 TLS 部分:

    # Settings for a TLS enabled server. server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name _; root /usr/share/nginx/html; ssl_certificate "/etc/pki/nginx/server.crt"; ssl_certificate_key "/etc/pki/nginx/private/server.key"; # It is *strongly* recommended to generate unique DH parameters # Generate them with: openssl dhparam -out /etc/pki/nginx/dhparams.pem 2048 #ssl_dhparam "/etc/pki/nginx/dhparams.pem"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA"; ssl_prefer_server_ciphers on; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
    Ubuntu 22.04 LTS

    尚不支持 OpenSSL 动态引擎。

    保存该文件。

  8. 备份 systemd 配置文件,然后设置 EnvironmentFile 路径。

    Amazon Linux

    无需操作。

    Amazon Linux 2
    1. 备份 nginx.service 文件。

      $ sudo cp /lib/systemd/system/nginx.service /lib/systemd/system/nginx.service.backup
    2. 用文本编辑器打开 /lib/systemd/system/nginx.service 文件,然后在 [Service] 部分下添加下列路径:

      EnvironmentFile=/etc/sysconfig/nginx
    CentOS 7

    无需操作。

    CentOS 8
    1. 备份 nginx.service 文件。

      $ sudo cp /lib/systemd/system/nginx.service /lib/systemd/system/nginx.service.backup
    2. 用文本编辑器打开 /lib/systemd/system/nginx.service 文件,然后在 [Service] 部分下添加下列路径:

      EnvironmentFile=/etc/sysconfig/nginx
    Red Hat 7

    无需操作。

    Red Hat 8
    1. 备份 nginx.service 文件。

      $ sudo cp /lib/systemd/system/nginx.service /lib/systemd/system/nginx.service.backup
    2. 用文本编辑器打开 /lib/systemd/system/nginx.service 文件,然后在 [Service] 部分下添加下列路径:

      EnvironmentFile=/etc/sysconfig/nginx
    Ubuntu 16.04
    1. 备份 nginx.service 文件。

      $ sudo cp /lib/systemd/system/nginx.service /lib/systemd/system/nginx.service.backup
    2. 用文本编辑器打开 /lib/systemd/system/nginx.service 文件,然后在 [Service] 部分下添加下列路径:

      EnvironmentFile=/etc/sysconfig/nginx
    Ubuntu 18.04
    1. 备份 nginx.service 文件。

      $ sudo cp /lib/systemd/system/nginx.service /lib/systemd/system/nginx.service.backup
    2. 用文本编辑器打开 /lib/systemd/system/nginx.service 文件,然后在 [Service] 部分下添加下列路径:

      EnvironmentFile=/etc/sysconfig/nginx
    Ubuntu 20.04 LTS
    1. 备份 nginx.service 文件。

      $ sudo cp /lib/systemd/system/nginx.service /lib/systemd/system/nginx.service.backup
    2. 用文本编辑器打开 /lib/systemd/system/nginx.service 文件,然后在 [Service] 部分下添加下列路径:

      EnvironmentFile=/etc/sysconfig/nginx
    Ubuntu 22.04 LTS

    尚不支持 OpenSSL 动态引擎。

  9. 检查 /etc/sysconfig/nginx 文件是否存在,然后执行下列操作之一:

    • 如果文件存在,请通过运行以下命令备份文件:

      $ sudo cp /etc/sysconfig/nginx /etc/sysconfig/nginx.backup
    • 如果文件不存在,请打开文本编辑器,然后在 /etc/sysconfig/ 文件夹中创建名为 nginx 的文件。

  10. 配置 NGINX 环境。

    注意

    客户端软件开发工具包 5 引入了用于存储 CU 凭证的 CLOUDHSM_PIN 环境变量。

    Amazon Linux

    在文本编辑器中打开 /etc/sysconfig/nginx 文件。这需要 Linux 根权限。添加加密用户 (CU) 凭证:

    • 如果使用客户端软件开发工具包 3

      n3fips_password=<CU user name>:<password>
    • 如果使用客户端软件开发工具包 5

      CLOUDHSM_PIN=<CU user name>:<password>

    <CU user name><password> 替换为 CU 凭证。

    保存该文件。

    Amazon Linux 2

    在文本编辑器中打开 /etc/sysconfig/nginx 文件。这需要 Linux 根权限。添加加密用户 (CU) 凭证:

    • 如果使用客户端软件开发工具包 3

      n3fips_password=<CU user name>:<password>
    • 如果使用客户端软件开发工具包 5

      CLOUDHSM_PIN=<CU user name>:<password>

    <CU user name><password> 替换为 CU 凭证。

    保存该文件。

    CentOS 7

    在文本编辑器中打开 /etc/sysconfig/nginx 文件。这需要 Linux 根权限。添加加密用户 (CU) 凭证:

    • 如果使用客户端软件开发工具包 3

      n3fips_password=<CU user name>:<password>
    • 如果使用客户端软件开发工具包 5

      CLOUDHSM_PIN=<CU user name>:<password>

    <CU user name><password> 替换为 CU 凭证。

    保存该文件。

    CentOS 8

    在文本编辑器中打开 /etc/sysconfig/nginx 文件。这需要 Linux 根权限。添加加密用户 (CU) 凭证:

    CLOUDHSM_PIN=<CU user name>:<password>

    <CU user name><password> 替换为 CU 凭证。

    保存该文件。

    Red Hat 7

    在文本编辑器中打开 /etc/sysconfig/nginx 文件。这需要 Linux 根权限。添加加密用户 (CU) 凭证:

    • 如果使用客户端软件开发工具包 3

      n3fips_password=<CU user name>:<password>
    • 如果使用客户端软件开发工具包 5

      CLOUDHSM_PIN=<CU user name>:<password>

    <CU user name><password> 替换为 CU 凭证。

    保存该文件。

    Red Hat 8

    在文本编辑器中打开 /etc/sysconfig/nginx 文件。这需要 Linux 根权限。添加加密用户 (CU) 凭证:

    CLOUDHSM_PIN=<CU user name>:<password>

    <CU user name><password> 替换为 CU 凭证。

    保存该文件。

    Ubuntu 16.04 LTS

    在文本编辑器中打开 /etc/sysconfig/nginx 文件。这需要 Linux 根权限。添加加密用户 (CU) 凭证:

    n3fips_password=<CU user name>:<password>

    <CU user name><password> 替换为 CU 凭证。

    保存该文件。

    Ubuntu 18.04 LTS

    在文本编辑器中打开 /etc/sysconfig/nginx 文件。这需要 Linux 根权限。添加加密用户 (CU) 凭证:

    CLOUDHSM_PIN=<CU user name>:<password>

    <CU user name><password> 替换为 CU 凭证。

    保存该文件。

    Ubuntu 20.04 LTS

    在文本编辑器中打开 /etc/sysconfig/nginx 文件。这需要 Linux 根权限。添加加密用户 (CU) 凭证:

    CLOUDHSM_PIN=<CU user name>:<password>

    <CU user name><password> 替换为 CU 凭证。

    保存该文件。

    Ubuntu 22.04 LTS

    尚不支持 OpenSSL 动态引擎。

  11. 启动 NGINX网络服务器。

    Amazon Linux

    在文本编辑器中打开 /etc/sysconfig/nginx 文件。这需要 Linux 根权限。添加加密用户 (CU) 凭证:

    $ sudo service nginx start
    Amazon Linux 2

    停止任何运行中的 NGINX 进程

    $ sudo systemctl stop nginx

    重新加载 systemd 配置以获取最新更改

    $ sudo systemctl daemon-reload

    启动 NGINX 进程

    $ sudo systemctl start nginx
    CentOS 7

    停止任何运行中的 NGINX 进程

    $ sudo systemctl stop nginx

    重新加载 systemd 配置以获取最新更改

    $ sudo systemctl daemon-reload

    启动 NGINX 进程

    $ sudo systemctl start nginx
    CentOS 8

    停止任何运行中的 NGINX 进程

    $ sudo systemctl stop nginx

    重新加载 systemd 配置以获取最新更改

    $ sudo systemctl daemon-reload

    启动 NGINX 进程

    $ sudo systemctl start nginx
    Red Hat 7

    停止任何运行中的 NGINX 进程

    $ sudo systemctl stop nginx

    重新加载 systemd 配置以获取最新更改

    $ sudo systemctl daemon-reload

    启动 NGINX 进程

    $ sudo systemctl start nginx
    Red Hat 8

    停止任何运行中的 NGINX 进程

    $ sudo systemctl stop nginx

    重新加载 systemd 配置以获取最新更改

    $ sudo systemctl daemon-reload

    启动 NGINX 进程

    $ sudo systemctl start nginx
    Ubuntu 16.04 LTS

    停止任何运行中的 NGINX 进程

    $ sudo systemctl stop nginx

    重新加载 systemd 配置以获取最新更改

    $ sudo systemctl daemon-reload

    启动 NGINX 进程

    $ sudo systemctl start nginx
    Ubuntu 18.04 LTS

    停止任何运行中的 NGINX 进程

    $ sudo systemctl stop nginx

    重新加载 systemd 配置以获取最新更改

    $ sudo systemctl daemon-reload

    启动 NGINX 进程

    $ sudo systemctl start nginx
    Ubuntu 20.04 LTS

    停止任何运行中的 NGINX 进程

    $ sudo systemctl stop nginx

    重新加载 systemd 配置以获取最新更改

    $ sudo systemctl daemon-reload

    启动 NGINX 进程

    $ sudo systemctl start nginx
    Ubuntu 22.04 LTS

    尚不支持 OpenSSL 动态引擎。

  12. (可选)将您的平台配置为在开启时启动 NGINX。

    Amazon Linux
    $ sudo chkconfig nginx on
    Amazon Linux 2
    $ sudo systemctl enable nginx
    CentOS 7

    无需操作。

    CentOS 8
    $ sudo systemctl enable nginx
    Red Hat 7

    无需操作。

    Red Hat 8
    $ sudo systemctl enable nginx
    Ubuntu 16.04 LTS
    $ sudo systemctl enable nginx
    Ubuntu 18.04 LTS
    $ sudo systemctl enable nginx
    Ubuntu 20.04 LTS
    $ sudo systemctl enable nginx
    Ubuntu 22.04 LTS

    尚不支持 OpenSSL 动态引擎。

在更新您的网络服务器配置后,转到步骤 4:启用 HTTPS 流量并验证证书

配置 Apache 网络服务器

使用此部分在支持的平台上配置 Apache。

更新 Apache 的网络服务器配置
  1. 连接到您的 Amazon EC2 客户端实例。

  2. 为您的平台定义默认的凭证和私钥位置。

    Amazon Linux

    /etc/httpd/conf.d/ssl.conf 文件中,确保存在以下值:

    SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
    Amazon Linux 2

    /etc/httpd/conf.d/ssl.conf 文件中,确保存在以下值:

    SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
    CentOS 7

    /etc/httpd/conf.d/ssl.conf 文件中,确保存在以下值:

    SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
    CentOS 8

    /etc/httpd/conf.d/ssl.conf 文件中,确保存在以下值:

    SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
    Red Hat 7

    /etc/httpd/conf.d/ssl.conf 文件中,确保存在以下值:

    SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
    Red Hat 8

    /etc/httpd/conf.d/ssl.conf 文件中,确保存在以下值:

    SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
    Ubuntu 16.04 LTS

    /etc/apache2/sites-available/default-ssl.conf 文件中,确保存在以下值:

    SSLCertificateFile /etc/ssl/certs/localhost.crt SSLCertificateKeyFile /etc/ssl/private/localhost.key
    Ubuntu 18.04 LTS

    /etc/apache2/sites-available/default-ssl.conf 文件中,确保存在以下值:

    SSLCertificateFile /etc/ssl/certs/localhost.crt SSLCertificateKeyFile /etc/ssl/private/localhost.key
    Ubuntu 20.04 LTS

    /etc/apache2/sites-available/default-ssl.conf 文件中,确保存在以下值:

    SSLCertificateFile /etc/ssl/certs/localhost.crt SSLCertificateKeyFile /etc/ssl/private/localhost.key
    Ubuntu 22.04 LTS

    尚不支持 OpenSSL 动态引擎。

  3. 将您的网络服务器证书复制到平台所需位置。

    Amazon Linux
    $ sudo cp <web_server.crt> /etc/pki/tls/certs/localhost.crt

    <web_server.crt> 替换为您的网络服务器证书的名称。

    Amazon Linux 2
    $ sudo cp <web_server.crt> /etc/pki/tls/certs/localhost.crt

    <web_server.crt> 替换为您的网络服务器证书的名称。

    CentOS 7
    $ sudo cp <web_server.crt> /etc/pki/tls/certs/localhost.crt

    <web_server.crt> 替换为您的网络服务器证书的名称。

    CentOS 8
    $ sudo cp <web_server.crt> /etc/pki/tls/certs/localhost.crt

    <web_server.crt> 替换为您的网络服务器证书的名称。

    Red Hat 7
    $ sudo cp <web_server.crt> /etc/pki/tls/certs/localhost.crt

    <web_server.crt> 替换为您的网络服务器证书的名称。

    Red Hat 8
    $ sudo cp <web_server.crt> /etc/pki/tls/certs/localhost.crt

    <web_server.crt> 替换为您的网络服务器证书的名称。

    Ubuntu 16.04 LTS
    $ sudo cp <web_server.crt> /etc/ssl/certs/localhost.crt

    <web_server.crt> 替换为您的网络服务器证书的名称。

    Ubuntu 18.04 LTS
    $ sudo cp <web_server.crt> /etc/ssl/certs/localhost.crt

    <web_server.crt> 替换为您的网络服务器证书的名称。

    Ubuntu 20.04 LTS
    $ sudo cp <web_server.crt> /etc/ssl/certs/localhost.crt

    <web_server.crt> 替换为您的网络服务器证书的名称。

    Ubuntu 22.04 LTS

    尚不支持 OpenSSL 动态引擎。

  4. 将您的虚设 PEM 私钥复制到平台所需的位置。

    Amazon Linux
    $ sudo cp <web_server_fake_PEM.key> /etc/pki/tls/private/localhost.key

    <web_server_fake_PEM.key> 替换为包含您的伪造 PEM 私有密钥的文件的名称。

    Amazon Linux 2
    $ sudo cp <web_server_fake_PEM.key> /etc/pki/tls/private/localhost.key

    <web_server_fake_PEM.key> 替换为包含您的伪造 PEM 私有密钥的文件的名称。

    CentOS 7
    $ sudo cp <web_server_fake_PEM.key> /etc/pki/tls/private/localhost.key

    <web_server_fake_PEM.key> 替换为包含您的伪造 PEM 私有密钥的文件的名称。

    CentOS 8
    $ sudo cp <web_server_fake_PEM.key> /etc/pki/tls/private/localhost.key

    <web_server_fake_PEM.key> 替换为包含您的伪造 PEM 私有密钥的文件的名称。

    Red Hat 7
    $ sudo cp <web_server_fake_PEM.key> /etc/pki/tls/private/localhost.key

    <web_server_fake_PEM.key> 替换为包含您的伪造 PEM 私有密钥的文件的名称。

    Red Hat 8
    $ sudo cp <web_server_fake_PEM.key> /etc/pki/tls/private/localhost.key

    <web_server_fake_PEM.key> 替换为包含您的伪造 PEM 私有密钥的文件的名称。

    Ubuntu 16.04 LTS
    $ sudo cp <web_server_fake_PEM.key> /etc/ssl/private/localhost.key

    <web_server_fake_PEM.key> 替换为包含您的伪造 PEM 私有密钥的文件的名称。

    Ubuntu 18.04 LTS
    $ sudo cp <web_server_fake_PEM.key> /etc/ssl/private/localhost.key

    <web_server_fake_PEM.key> 替换为包含您的伪造 PEM 私有密钥的文件的名称。

    Ubuntu 20.04 LTS
    $ sudo cp <web_server_fake_PEM.key> /etc/ssl/private/localhost.key

    <web_server_fake_PEM.key> 替换为包含您的伪造 PEM 私有密钥的文件的名称。

    Ubuntu 22.04 LTS

    尚不支持 OpenSSL 动态引擎。

  5. 如果您的平台需要,可以更改该文件的所有权。

    Amazon Linux
    $ sudo chown apache /etc/pki/tls/certs/localhost.crt /etc/pki/tls/private/localhost.key

    为名为apache 的用户提供读取权限。

    Amazon Linux 2
    $ sudo chown apache /etc/pki/tls/certs/localhost.crt /etc/pki/tls/private/localhost.key

    为名为apache 的用户提供读取权限。

    CentOS 7
    $ sudo chown apache /etc/pki/tls/certs/localhost.crt /etc/pki/tls/private/localhost.key

    为名为apache 的用户提供读取权限。

    CentOS 8
    $ sudo chown apache /etc/pki/tls/certs/localhost.crt /etc/pki/tls/private/localhost.key

    为名为apache 的用户提供读取权限。

    Red Hat 7
    $ sudo chown apache /etc/pki/tls/certs/localhost.crt /etc/pki/tls/private/localhost.key

    为名为apache 的用户提供读取权限。

    Red Hat 8
    $ sudo chown apache /etc/pki/tls/certs/localhost.crt /etc/pki/tls/private/localhost.key

    为名为apache 的用户提供读取权限。

    Ubuntu 16.04 LTS

    无需操作。

    Ubuntu 18.04 LTS

    无需操作。

    Ubuntu 20.04 LTS

    无需操作。

    Ubuntu 22.04 LTS

    尚不支持 OpenSSL 动态引擎。

  6. 为您的平台配置 Apache 指令。

    Amazon Linux

    找到此平台的 SSL 文件:

    /etc/httpd/conf.d/ssl.conf

    此文件包含定义服务器运行方式的 Apache 指令。指令在左侧显示,后面跟值。使用文本编辑器编辑此文件。这需要 Linux 根权限。

    通过这些值更新或输入以下指令:

    SSLCryptoDevice cloudhsm SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA

    保存该文件。

    Amazon Linux 2

    找到此平台的 SSL 文件:

    /etc/httpd/conf.d/ssl.conf

    此文件包含定义服务器运行方式的 Apache 指令。指令在左侧显示,后面跟值。使用文本编辑器编辑此文件。这需要 Linux 根权限。

    通过这些值更新或输入以下指令:

    SSLCryptoDevice cloudhsm SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA

    保存该文件。

    CentOS 7

    找到此平台的 SSL 文件:

    /etc/httpd/conf.d/ssl.conf

    此文件包含定义服务器运行方式的 Apache 指令。指令在左侧显示,后面跟值。使用文本编辑器编辑此文件。这需要 Linux 根权限。

    通过这些值更新或输入以下指令:

    SSLCryptoDevice cloudhsm SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA

    保存该文件。

    CentOS 8

    找到此平台的 SSL 文件:

    /etc/httpd/conf.d/ssl.conf

    此文件包含定义服务器运行方式的 Apache 指令。指令在左侧显示,后面跟值。使用文本编辑器编辑此文件。这需要 Linux 根权限。

    通过这些值更新或输入以下指令:

    SSLCryptoDevice cloudhsm SSLProtocol TLSv1.2 TLSv1.3 SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA SSLProxyCipherSuite HIGH:!aNULL

    保存该文件。

    Red Hat 7

    找到此平台的 SSL 文件:

    /etc/httpd/conf.d/ssl.conf

    此文件包含定义服务器运行方式的 Apache 指令。指令在左侧显示,后面跟值。使用文本编辑器编辑此文件。这需要 Linux 根权限。

    通过这些值更新或输入以下指令:

    SSLCryptoDevice cloudhsm SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA

    保存该文件。

    Red Hat 8

    找到此平台的 SSL 文件:

    /etc/httpd/conf.d/ssl.conf

    此文件包含定义服务器运行方式的 Apache 指令。指令在左侧显示,后面跟值。使用文本编辑器编辑此文件。这需要 Linux 根权限。

    通过这些值更新或输入以下指令:

    SSLCryptoDevice cloudhsm SSLProtocol TLSv1.2 TLSv1.3 SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA SSLProxyCipherSuite HIGH:!aNULL

    保存该文件。

    Ubuntu 16.04 LTS

    找到此平台的 SSL 文件:

    /etc/apache2/mods-available/ssl.conf

    此文件包含定义服务器运行方式的 Apache 指令。指令在左侧显示,后面跟值。使用文本编辑器编辑此文件。这需要 Linux 根权限。

    通过这些值更新或输入以下指令:

    SSLCryptoDevice cloudhsm SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA

    保存该文件。

    启用 SSL 模块以及默认 SSL 站点配置:

    $ sudo a2enmod ssl $ sudo a2ensite default-ssl
    Ubuntu 18.04 LTS

    找到此平台的 SSL 文件:

    /etc/apache2/mods-available/ssl.conf

    此文件包含定义服务器运行方式的 Apache 指令。指令在左侧显示,后面跟值。使用文本编辑器编辑此文件。这需要 Linux 根权限。

    通过这些值更新或输入以下指令:

    SSLCryptoDevice cloudhsm SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA SSLProtocol TLSv1.2 TLSv1.3

    保存该文件。

    启用 SSL 模块以及默认 SSL 站点配置:

    $ sudo a2enmod ssl $ sudo a2ensite default-ssl
    Ubuntu 20.04 LTS

    找到此平台的 SSL 文件:

    /etc/apache2/mods-available/ssl.conf

    此文件包含定义服务器运行方式的 Apache 指令。指令在左侧显示,后面跟值。使用文本编辑器编辑此文件。这需要 Linux 根权限。

    通过这些值更新或输入以下指令:

    SSLCryptoDevice cloudhsm SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA SSLProtocol TLSv1.2 TLSv1.3

    保存该文件。

    启用 SSL 模块以及默认 SSL 站点配置:

    $ sudo a2enmod ssl $ sudo a2ensite default-ssl
    Ubuntu 22.04 LTS

    尚不支持 OpenSSL 动态引擎。

  7. 为您的平台配置环境值文件。

    Amazon Linux

    无需操作。环境价值被纳入 /etc/sysconfig/httpd

    Amazon Linux 2

    打开 httpd 服务文件:

    /lib/systemd/system/httpd.service

    [Service] 部分添加以下内容:

    EnvironmentFile=/etc/sysconfig/httpd
    CentOS 7

    打开 httpd 服务文件:

    /lib/systemd/system/httpd.service

    [Service] 部分添加以下内容:

    EnvironmentFile=/etc/sysconfig/httpd
    CentOS 8

    打开 httpd 服务文件:

    /lib/systemd/system/httpd.service

    [Service] 部分添加以下内容:

    EnvironmentFile=/etc/sysconfig/httpd
    Red Hat 7

    打开 httpd 服务文件:

    /lib/systemd/system/httpd.service

    [Service] 部分添加以下内容:

    EnvironmentFile=/etc/sysconfig/httpd
    Red Hat 8

    打开 httpd 服务文件:

    /lib/systemd/system/httpd.service

    [Service] 部分添加以下内容:

    EnvironmentFile=/etc/sysconfig/httpd
    Ubuntu 16.04 LTS

    无需操作。环境价值被纳入 /etc/sysconfig/httpd

    Ubuntu 18.04 LTS

    无需操作。环境价值被纳入 /etc/sysconfig/httpd

    Ubuntu 20.04 LTS

    无需操作。环境价值被纳入 /etc/sysconfig/httpd

    Ubuntu 22.04 LTS

    尚不支持 OpenSSL 动态引擎。

  8. 在存储平台环境变量的文件中,设置一个包含加密用户 (CU) 凭证的环境变量:

    Amazon Linux

    使用文本编辑器编辑 /etc/sysconfig/httpd

    • 如果使用客户端软件开发工具包 3

      n3fips_password=<CU user name>:<password>
    • 如果使用客户端软件开发工具包 5

      CLOUDHSM_PIN=<CU user name>:<password>

    <CU user name><password> 替换为 CU 凭证。

    Amazon Linux 2

    使用文本编辑器编辑 /etc/sysconfig/httpd

    • 如果使用客户端软件开发工具包 3

      n3fips_password=<CU user name>:<password>
    • 如果使用客户端软件开发工具包 5

      CLOUDHSM_PIN=<CU user name>:<password>

    <CU user name><password> 替换为 CU 凭证。

    CentOS 7

    使用文本编辑器编辑 /etc/sysconfig/httpd

    • 如果使用客户端软件开发工具包 3

      n3fips_password=<CU user name>:<password>
    • 如果使用客户端软件开发工具包 5

      CLOUDHSM_PIN=<CU user name>:<password>

    <CU user name><password> 替换为 CU 凭证。

    CentOS 8

    使用文本编辑器编辑 /etc/sysconfig/httpd

    CLOUDHSM_PIN=<CU user name>:<password>

    <CU user name><password> 替换为 CU 凭证。

    Red Hat 7

    使用文本编辑器编辑 /etc/sysconfig/httpd

    • 如果使用客户端软件开发工具包 3

      n3fips_password=<CU user name>:<password>
    • 如果使用客户端软件开发工具包 5

      CLOUDHSM_PIN=<CU user name>:<password>

    <CU user name><password> 替换为 CU 凭证。

    Red Hat 8

    使用文本编辑器编辑 /etc/sysconfig/httpd

    CLOUDHSM_PIN=<CU user name>:<password>

    <CU user name><password> 替换为 CU 凭证。

    注意

    客户端软件开发工具包 5 引入了用于存储 CU 凭证的 CLOUDHSM_PIN 环境变量。

    Ubuntu 16.04 LTS

    使用文本编辑器编辑 /etc/apache2/envvars

    export n3fips_password=<CU user name>:<password>

    <CU user name><password> 替换为 CU 凭证。

    Ubuntu 18.04 LTS

    使用文本编辑器编辑 /etc/apache2/envvars

    export CLOUDHSM_PIN=<CU user name>:<password>

    <CU user name><password> 替换为 CU 凭证。

    注意

    客户端软件开发工具包 5 引入了用于存储 CU 凭证的 CLOUDHSM_PIN 环境变量。在客户端软件开发工具包 3 中,您将 CU 凭据存储在 n3fips_password 环境变量中。客户端软件开发工具包 5 支持这两个环境变量,但我们建议使用 CLOUDHSM_PIN

    Ubuntu 20.04 LTS

    使用文本编辑器编辑 /etc/apache2/envvars

    export CLOUDHSM_PIN=<CU user name>:<password>

    <CU user name><password> 替换为 CU 凭证。

    注意

    客户端软件开发工具包 5 引入了用于存储 CU 凭证的 CLOUDHSM_PIN 环境变量。在客户端软件开发工具包 3 中,您将 CU 凭据存储在 n3fips_password 环境变量中。客户端软件开发工具包 5 支持这两个环境变量,但我们建议使用 CLOUDHSM_PIN

    Ubuntu 22.04 LTS

    尚不支持 OpenSSL 动态引擎。

  9. 启动 Apache网络服务器。

    Amazon Linux
    $ sudo systemctl daemon-reload $ sudo service httpd start
    Amazon Linux 2
    $ sudo systemctl daemon-reload $ sudo service httpd start
    CentOS 7
    $ sudo systemctl daemon-reload $ sudo service httpd start
    CentOS 8
    $ sudo systemctl daemon-reload $ sudo service httpd start
    Red Hat 7
    $ sudo systemctl daemon-reload $ sudo service httpd start
    Red Hat 8
    $ sudo systemctl daemon-reload $ sudo service httpd start
    Ubuntu 16.04 LTS
    $ sudo service apache2 start
    Ubuntu 18.04 LTS
    $ sudo service apache2 start
    Ubuntu 20.04 LTS
    $ sudo service apache2 start
    Ubuntu 22.04 LTS

    尚不支持 OpenSSL 动态引擎。

  10. (可选)将您的平台配置为在开启时启动 Apache。

    Amazon Linux
    $ sudo chkconfig httpd on
    Amazon Linux 2
    $ sudo chkconfig httpd on
    CentOS 7
    $ sudo chkconfig httpd on
    CentOS 8
    $ systemctl enable httpd
    Red Hat 7
    $ sudo chkconfig httpd on
    Red Hat 8
    $ systemctl enable httpd
    Ubuntu 16.04 LTS
    $ sudo systemctl enable apache2
    Ubuntu 18.04 LTS
    $ sudo systemctl enable apache2
    Ubuntu 20.04 LTS
    $ sudo systemctl enable apache2
    Ubuntu 22.04 LTS

    尚不支持 OpenSSL 动态引擎。

在更新您的网络服务器配置后,转到 步骤 4:启用 HTTPS 流量并验证证书

步骤 4:启用 HTTPS 流量并验证证书

通过 AWS CloudHSM 配置用于 SSL/TLS 分流的服务器后,将您的 web 实例添加至允许入站 HTTPS 流量的安全组。Web 浏览器等客户端可通过 Web 服务器创建 HTTPS 连接。然后与您的 Web 服务器建立 HTTPS 连接,并确认它使用的是 AWS CloudHSM SSL/TLS 分流配置的证书。

启用入站 HTTPS 连接

要从客户端 (如 Web 浏览器) 连接到您的 Web 服务器,请创建一个允许入站 HTTPS 连接的安全组。具体来说,它应允许端口 443 上的入站 TCP 连接。将此安全组分配给您的网络服务器。

为 HTTPS 创建安全组并将其分配给您的网络服务器
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择安全组

  3. 选择创建安全组

  4. 对于创建安全组,执行以下操作:

    1. 对于安全组名称,键入您要创建的安全组的名称。

    2. (可选) 键入对您要创建的安全组的描述。

    3. 对于 VPC,选择包含您的 Web 服务器 Amazon EC2 实例的 VPC。

    4. 选择添加规则

    5. 对于类型,从下拉窗口中选择 HTTPS

    6. 对于来源,输入来源位置。

    7. 选择创建安全组

  5. 在导航窗格中,选择实例

  6. 选中您的 Web 服务器实例旁边的复选框。

  7. 在页面顶部选择操作下拉菜单。选择安全,然后选择更改安全组

  8. 对于关联安全组,请选择搜索框,然后选择您为 HTTPS 创建的安全组。然后选择添加安全组

  9. 选择保存

验证 HTTPS 使用的是您已配置的证书

将 Web 服务器添加到安全组后,就可以验证 SSL/TLS 分载是否使用了自签名证书。您可以使用网络浏览器或使用工具 (如 OpenSSL s_client) 执行此操作。

使用网络浏览器验证 SSL/TLS 分载
  1. 使用 Web 浏览器连接到采用服务器的公共 DNS 名称或 IP 地址的 Web 服务器。确保地址栏中的 URL 以 https:// 开头。例如,https://ec2-52-14-212-67.us-east-2.compute.amazonaws.com/

    提示

    您可以使用 DNS 服务 (如 Amazon Route 53) 将网站域名 (例如,https://www.example.com/) 路由到您的 Web 服务器。有关更多信息,请参阅 《Amazon Route 53 开发人员指南》或 DNS 服务文档中的将流量路由到 Amazon EC2 实例

  2. 使用您的 Web 浏览器查看 Web 服务器证书。有关更多信息,请参阅下列内容:

    • 对于 Mozilla Firefox,请参阅 Mozilla Support 网站上的查看证书

    • 关于 Google Chrome 浏览器,请参阅 Google Tools for Web Developers 网站上的了解安全问题

    其他网络浏览器可能具有相似的功能,可使用这些功能来查看网络服务器证书。

  3. 确保 SSL/TLS 证书是您配置 Web 服务器使用的证书。

使用 OpenSSL s_client 验证 SSL/TLS 分载
  1. 运行以下 OpenSSL 命令以通过 HTTPS 连接到您的 Web 服务器。将 <server name> 替换为您的 Web 服务器的公有 DNS 名称或 IP 地址。

    openssl s_client -connect <server name>:443
    提示

    您可以使用 DNS 服务 (如 Amazon Route 53) 将网站域名 (例如,https://www.example.com/) 路由到您的 Web 服务器。有关更多信息,请参阅 《Amazon Route 53 开发人员指南》或 DNS 服务文档中的将流量路由到 Amazon EC2 实例

  2. 确保 SSL/TLS 证书是您配置 Web 服务器使用的证书。

您现在有一个通过 HTTPS 保护的网站。网络服务器的私有密钥存储在 AWS CloudHSM 集群的 HSM 中。

若要添加负载均衡器,请参阅 使用 Elastic Load Balancing 为 AWS CloudHSM 添加负载均衡器(可选)