为Linux上的Microsoft连接缓存启用 HTTPS 支持

本文提供在Linux主机上运行的Microsoft连接缓存企业版节点上启用 HTTPS 支持的分步说明。

安装过程需要在主机上生成证书签名请求 (CSR) ,使用企业或公共 PKI 对 CSR 进行签名,然后导入回主机计算机。

必备条件

在设置 HTTPS 功能之前,请确保满足以下要求:

  • 缓存节点使用 GA 软件版本

    1. 打开Azure 门户并导航到托管缓存节点的“连接缓存企业版”资源。
    2. “缓存节点管理”下,找到要启用 HTTPS 的缓存节点。
    3. 验证节点是否为 GA 版本 - 应在“ 已迁移 ”列中显示“是”或“N/A”。
    4. 如果不是正式版 (“否”,请在“ 迁移 ”列) 选择缓存节点,导航到“ 部署 ”选项卡,然后按照说明重新部署连接的缓存。
  • 访问证书颁发机构 (CA)

    你需要访问企业 PKI 或公共 CA。 如果使用企业 PKI,检查组织向 CA 提交 CSR 的要求。

  • 文档客户端连接方法

    请注意客户端用于连接到连接的缓存服务器的 IP 地址或主机名 (FQDN) 。 在生成 CSR 的过程中,此值将用作 SAN) 输入 (使用者可选名称。

  • 确保端口 443 可用性

    若要与连接的缓存建立 HTTPS 连接,需要在主机上提供端口 443。 运行以下命令以检查:

    sudo ss -tulpn | grep :443
    

    查看输出:

    • 无输出 - 端口 443 未使用。 继续执行 HTTPS 设置。
    • 输出包含 LISTEN 例如, () tcp LISTEN 0 128 0.0.0.0:443 0.0.0.0:* users:(("nginx",pid=1234,fd=6)) — 端口 443 已被其他服务使用。 在连接缓存可以使用端口 443 之前,识别并停止冲突服务。

    提示

    输出 ss 显示最后一列中的进程名称和 PID。 在上面的示例中, nginx (PID 1234) 正在使用端口 443。 停止或重新配置有冲突的服务,然后再继续。 例如,运行 sudo systemctl stop nginx 以停止 nginx。

  • 验证防火墙配置

    例如,如果防火墙或公司代理 (通过 TLS 检查) 拦截到连接的缓存服务器的 HTTPS 流量,则无论证书配置如何,证书验证都将始终失败。

有关任何先决条件的详细信息,请参阅 HTTPS on Linux 参考页

(CSR) 生成证书签名请求

重要提示

每个缓存节点都需要自己的 CSR/证书 (无法共享) :

  • 使用一致的命名:mcc-node1.company.com、mcc-node2.company.com 等。
  • 记录哪个证书属于哪个节点
  • 通配符证书不起作用。 出于安全目的,用于 HTTPS 连接到连接缓存的 CSR/证书与每个缓存节点唯一关联。
  1. 打开终端并导航到包含提取的部署包的文件夹。

  2. 向 CSR 生成脚本添加执行权限:

    sudo chmod +x ./generateCsr.sh
    
  3. 配置 的参数 generateCsr.sh ,并使用指定的值运行脚本。

    基本语法

    sudo ./generateCsr.sh [Required Parameters] [Subject Parameters] [SAN Parameters]
    

    必需参数

    参数 类型 说明
    -algo 字符串 证书算法: RSAECED25519ED448
    -keySizeOrCurve 字符串 对于 RSA:密钥大小 (204830724096) 。 对于 EC:曲线名称 (prime256v1secp384r1)
    -csrName 字符串 生成的 CSR 文件的名称

    使用者参数

    参数 必需 说明 示例
    -subjectCommonName 证书的公用名 "localhost", "example.com"
    -subjectCountry 双字母国家/地区代码 "US", "CA", "GB"
    -subjectState 省/市/自治区/直辖市/自治区 "WA", "TX", "Ontario"
    -subjectOrg 组织名称 "MyCompany", "ACME Corp"

    警告

    使用者可选名称 (SAN) 配置对于证书验证至关重要。 证书必须与客户端连接到连接的缓存的方式完全匹配,否则客户端会绕过缓存节点。

    例如,如果客户端通过 IP 地址 192.168.1.100 进行连接,但证书只有 -sanDns "server.local",证书验证将失败。

    SAN 参数 (至少一个必需的)

    参数 说明 示例
    -sanDns DNS 名称 (逗号分隔) "localhost,example.com,api.example.com"
    -sanIp IP 地址 (逗号分隔) "127.0.0.1,192.168.1.100"
    -sanUri URI (逗号分隔) "https://example.com,http://localhost"
    -sanEmail Email地址 (逗号分隔) "admin@example.com,user@domain.com"
    -sanRid 已注册的 ID (逗号分隔)
    -sanDirName 目录名称 (逗号分隔)
    -sanOtherName 其他名称 (逗号分隔)

    有关 CSR 脚本参数的更多详细信息和基于方案的示例,请参阅 HTTPS on Linux 参考页

  4. 验证 CSR 生成过程是否已成功完成。

    如果遇到错误,请在脚本输出中指定的文件夹中找到带时间戳 GenerateCsr.log 的文件。 查找以“可在此处找到日志:...”开头的输出行

    • 文件格式: GenerateCsr_YYYYMMDD-HHMMSS.log
    • 例子: GenerateCsr_20251201_143022.log是创建于 2025 年 12 月 1 日下午 2:30:22 的文件
  5. 在主机上的 “证书”文件夹中 找到生成的 CSR 文件,并在必要时传输该文件。

    在脚本输出中指定 “证书”文件夹 的位置,从“创建于...”的 CSR 文件开始。 目录以 (...\Certificates\certs) 结尾。

签署 CSR

  1. 选择证书颁发机构 (CA) 以签署 CSR。

    重要提示

    CA 签名必须与客户端受信任的根存储中的根证书匹配。

    • 企业 PKI:大多数客户使用其组织的内部 PKI 基础结构来签署 CSR。 请与 IT 或安全团队联系,了解将 CSR 提交到内部 CA 的过程。

    • 公共 CA:如果没有企业 PKI,可以使用公共 CA。 以下资源可帮助你入门:

  2. 将 CSR 提交到所选的 CA 并保存已签名的证书。

    已签名证书必须采用 X.509 编码的 .crt 格式。 如果 CA 提供其他格式,检查Linux参考页上的 HTTPS,了解如何转换为 .crt 格式。

    注意

    连接的缓存 当前不支持密码保护格式 (.pfx、.p12、.p7b) 。 作为证书自动化路线图的一部分,将立即添加对这些的支持。

  3. 验证签名证书的格式是否正确。

    确认 PEM 编码:

    grep "BEGIN CERTIFICATE" xxxx.crt
    

    预期成功输出:

    -----BEGIN CERTIFICATE-----
    
  4. 将已签名的证书移动到Linux主机上的“证书”文件夹

    这将是在生成 CSR 后最初找到的同一文件夹。

    注意

    不共享私钥,连接缓存仅需要签名证书。

导入已签名 TLS 证书

  1. 打开终端并导航到连接缓存安装程序的位置。

  2. 向证书导入脚本添加执行权限:

    sudo chmod +x ./importCert.sh
    
  3. 配置 的参数 importCert.sh ,并使用指定的值运行脚本。

    基本语法

    sudo ./importCert.sh [Required Parameters]
    

    必需参数

    参数 类型 说明
    -certName 字符串 带或不带 .crt 扩展名的已签名 TLS 证书的完整文件名 ()

    例子

    sudo ./importCert.sh -certName "myTlsCert.crt"
    
  4. 验证导入过程是否已成功完成。

    如果遇到错误,请在脚本输出中指定的文件夹中找到带时间戳 ImportCert.log 的文件。 查找以“可在此处找到日志:...”开头的输出行

    • 文件格式: ImportCert_YYYYMMDD-HHMMSS.log
    • 例子: ImportCert_20251201_143022.log是创建于 2025 年 12 月 1 日下午 2:30:22 的文件
  5. 通过运行 ShowCertDetails.sh 脚本验证是否已导入正确的证书。

    注意

    ShowCertDetails.sh脚本从 Linux 部署包 v1.10 开始可用。

    向脚本添加执行权限:

    sudo chmod +x ./ShowCertDetails.sh
    

    运行脚本:

    sudo ./ShowCertDetails.sh
    

    此脚本显示当前导入到缓存节点的 TLS 证书的证书指纹和到期日期。

有关如何进一步验证证书导入的说明,请参阅 https on Linux 验证页

禁用 HTTPS 支持

如果需要将连接的缓存还原为仅限 HTTP 的通信,请执行以下步骤。 此过程不会删除“证书”文件夹中的任何内容 - CSR 文件、证书或日志。

  1. 在Linux主机上,打开终端并导航到包含提取的部署包的文件夹。

  2. 向 TLS 禁用脚本添加执行权限:

    sudo chmod +x ./disableTls.sh
    
  3. (不需要参数) 运行禁用脚本:

    sudo ./disableTls.sh
    
  4. 验证禁用过程是否已成功完成。

  5. 禁用 HTTPS 后,HTTP 请求应正常工作,而 HTTPS 请求应失败。 有关如何测试此验证的说明,请参阅Linux上的 HTTPS 验证页

后续步骤