本文提供了有关在 Windows 主机上运行的适用于企业和教育的 Microsoft 连接缓存节点上启用 HTTPS 支持的说明。
安装过程需要在主机上生成 (CSR) 证书签名请求,使用企业或公共 PKI 对 CSR 进行签名,然后导入回主机。
必备条件
在设置 HTTPS 功能之前,请确保满足以下要求:
缓存节点在 GA 软件版本上
- 打开 Azure 门户,导航到包含缓存节点的适用于企业的连接缓存资源。
- 在 “缓存节点管理”下,找到要在其上启用 HTTPS 的缓存节点。
- 验证节点是否在 GA 版本上 - 应在“ 已迁移 ”列中显示“是”或“不适用”。
- 如果不在“已 迁移 ”列) 中的 GA 版本 (“否”上,请选择缓存节点,导航到 “部署 ”选项卡,然后按照说明重新部署连接缓存。
访问证书颁发机构 (CA)
需要访问企业 PKI 或公共 CA。 如果使用企业 PKI,请检查组织向 CA 提交 CSR 的要求。
文档客户端连接方法
记下客户端用于连接连接缓存服务器 (FQDN) 的 IP 地址或主机名。 在生成 CSR 过程中,此值将用作 SAN) 输入 (使用者备用名称。
确保端口 443 可用
要与连接缓存建立 HTTPS 连接,主机上需要有端口 443 可用。 运行以下命令以检查:
netstat -an | findstr :443查看输出:
- 无输出 - 未使用端口 443。 继续 HTTPS 设置。
-
输出包含
LISTENING(例如,TCP 0.0.0.0:443 0.0.0.0:0 LISTENING) — 端口 443 处于打开状态并侦听传入连接。 继续 HTTPS 设置。 -
输出包含
ESTABLISHED(例如,TCP 192.168.1.10:443 10.0.0.5:52674 ESTABLISHED) — 端口 443 正由另一个服务主动使用。 在连接缓存使用端口 443 之前,识别并停止冲突的服务。
提示
若要使用端口 443 识别服务,请运行
netstat -ano | findstr :443以查找最后一列中的进程 ID (PID) 。 然后运行tasklist /fi "pid eq <PID>"(替换<PID>为实际编号) 以查看进程名称。 使用端口 443 的常见服务包括 IIS、其他 Web 服务器和 VPN 软件。 在继续之前,停止或重新配置冲突的服务。验证公司代理配置
如果防火墙或公司代理 (例如通过 TLS 检查) 截获发往 Connected Cache 服务器的 HTTPS 流量,则无论证书配置如何,证书验证都将始终失败。
有关任何先决条件的详细信息,请参阅 Windows 上的 HTTPS 参考页。
生成证书签名请求 (CSR)
重要提示
每个缓存节点需要自己的 CSR/证书 (不能共享) :
- 使用一致的命名:mcc-node1.company.com、mcc-node2.company.com 等。
- 记录哪个证书属于哪个节点
- 通配符证书不起作用。 出于安全目的,用于 HTTPS 连接到连接缓存的 CSR/证书唯一绑定到每个缓存节点。
以管理员身份打开 PowerShell,并导航到包含其 PowerShell 脚本的“连接缓存”文件夹。
运行以下命令以导航到此连接缓存脚本文件夹:
cd (deliveryoptimization-cli mcc-get-scripts-path)配置参数
generateCsr.ps1并使用指定的值运行脚本。基本语法
.\generateCsr.ps1 [Required Parameters] [Subject Parameters] [SAN Parameters]必需参数
参数 描述 -algo证书算法: RSA、、ECED25519、或ED448-keySizeOrCurve对于 RSA:密钥大小 ( 2048,3072,4096) 。 对于 EC:曲线名称 (prime256v1,secp384r1) 。 对于 ED25519 和 ED448:不需要密钥大小。-csrNameCSR 文件所需的名称 -mccRunTimeAccount运行连接缓存软件的帐户。 这应该是一个 PowerShell 变量,其中包含要指定为连接缓存运行时帐户的帐户的用户名。 例如, $User = "LocalMachineName\Username"对于本地用户帐户。 如果使用组托管服务帐户 (gMSA) ,则应将其格式设置为"Domain\Username$".-mccLocalAccountCredential连接缓存运行时帐户的 PowerShell 凭据对象。 仅当使用本地用户帐户、域用户帐户或服务帐户时才需要这样做。 该命令 $myLocalAccountCredential = Get-Credential可用于将凭据检索 GUI 排队。注意
该
-mccRunTimeAccount参数在 Connected Cache Windows 应用程序 v1.0.26.0 及更高版本中可用。 如果使用的是早期的 v1.0.24.0 应用程序,请用于本地用户、域用户和服务帐户,或-RunTimeAccount用于-RunTimeAccountName组托管服务帐户 (gMSA) 。主题参数
参数 必需 说明 示例 -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",则证书验证将失败。使用者备用名称 (至少一个必需)
参数 说明 示例 -sanDnsDNS 名称 (逗号分隔的) "localhost,example.com,api.example.com"-sanIp(逗号分隔) 的 IP 地址 "127.0.0.1,192.168.1.100"-sanUri(逗号分隔) 的 URI "https://example.com,http://localhost"-sanEmailEmail地址 (逗号分隔的) "admin@example.com,user@domain.com"-sanRid已注册的 ID (逗号分隔的) -sanDirName目录名称 (逗号分隔的) -sanOtherName其他名称 (逗号分隔) 有关 CSR 脚本参数的更多详细信息和基于场景的示例,请参阅 HTTPS on Windows 参考
验证 CSR 生成过程是否已成功完成。
如果遇到错误,请在脚本输出中指定的文件夹中找到带时间戳的文件
GenerateCsr.log。 查找以“Check logs for detailed error information:”开头的输出行。目录以 (...\Certificates\logs) 结尾。- 文件格式: GenerateCsr_YYYYMMDD-HHMMSS.log
- 示例: GenerateCsr_20251201_143022.log 是 2025 年 12 月 1 日下午 2:30:22 创建的文件
在主机上的 证书文件夹 中找到生成的 CSR 文件,并在必要时传输它
Certificates 文件夹的位置在脚本输出中指定,以“CSR 文件创建时间:...”开头。 目录以 (...\Certificates\certs) 结尾。
签署企业社会责任
选择证书颁发机构 (CA) 对 CSR 进行签名。
重要提示
CA 签名必须与客户端受信任的根存储中的根证书匹配。
企业 PKI:大多数客户使用其组织的内部 PKI 基础结构来签署 CSR。 请咨询 IT 或安全团队,了解组织向内部 CA 提交 CSR 的流程。
公共 CA:如果没有企业 PKI,可以使用公共 CA。 以下资源可帮助你入门:
将 CSR 提交到所选的 CA 并保存已签名的证书。
签名的证书必须是 PEM 编码的 X.509 证书,并且扩展名为 .crt (Base64 文本,以-----BEGIN CERTIFICATE-----) 开头。 DER/二进制证书必须转换为 PEM - 有关如何转换为 .crt 格式,请参阅 Windows 上的 HTTPS 参考 。
注意
Connected Cache 当前不支持受密码保护的格式 (.pfx、.p12、.p7b) 。 作为证书自动化路线图的一部分,将很快添加对这些支持。
验证签名证书的格式是否正确。
确认 PEM 编码:
Get-Content "xxxx.crt" | Select-String "BEGIN CERTIFICATE"预期成功输出:
-----BEGIN CERTIFICATE-----将已签名的证书移动到 Windows 主机上的 “证书”文件夹 。
这将是生成 CSR 后最初找到它的文件夹: (...\Certificates\certs) 。
注意
请勿共享私钥,连接缓存仅需要签名的证书。
导入已签名的 TLS 证书
以管理员身份打开 PowerShell,并导航到包含其 PowerShell 脚本的“连接缓存”文件夹。
配置参数
importCert.ps1并使用指定的值运行脚本。基本语法
.\importCert.ps1 [Required Parameters]必需参数
参数 描述 -certName已签名的 TLS 证书的完整文件名 (带或不带 .crt 扩展名) -mccRunTimeAccount运行连接缓存软件的帐户。 这应该是一个 PowerShell 变量,其中包含要指定为连接缓存运行时帐户的帐户的用户名。 例如, $User = "LocalMachineName\Username"对于本地用户帐户。 如果使用组托管服务帐户 (gMSA) ,则应将其格式设置为"Domain\Username$".-mccLocalAccountCredential连接缓存运行时帐户的 PowerShell 凭据对象。 仅当使用本地用户帐户、域用户帐户或服务帐户时才需要这样做。 例如, $myLocalAccountCredential = Get-Credential。注意
该
-mccRunTimeAccount参数在 Connected Cache Windows 应用程序 v1.0.26.0 及更高版本中可用。 如果使用的是早期的 v1.0.24.0 应用程序,请用于本地用户、域用户和服务帐户,或-RunTimeAccount用于-RunTimeAccountName组托管服务帐户 (gMSA) 。注意
v1.0.24.0 连接缓存 Windows 应用程序不支持使用 gMSA 运行时帐户在 Windows Server 2022 或 Windows Server 2025 上运行
importCert.ps1。 使用 v1.0.26.0 应用程序或更高版本在这些环境中运行此脚本。示例
.\importCert.ps1 ` -mccRunTimeAccount $myLocalAccountCredential.Username ` -mccLocalAccountCredential $myLocalAccountCredential ` -certName "myTlsCert.crt"验证导入过程是否已成功完成。
如果遇到错误,请在脚本输出中指定的文件夹中找到带时间戳的文件
ImportCert.log。 查找以“You can find logs here: ...”- 文件格式: ImportCert_YYYYMMDD-HHMMSS.log
- 示例: ImportCert_20251201_143022.log 是 2025 年 12 月 1 日下午 2:30:22 创建的文件
通过运行
ShowCertDetails.ps1脚本验证是否导入了正确的证书。注意
该
ShowCertDetails.ps1脚本从 Windows 部署应用程序 v1.0.26 开始提供。.\ShowCertDetails.ps1此脚本显示当前导入到缓存节点的 TLS 证书的证书指纹和到期日期。
确保外部客户端可通过端口 443 访问连接缓存。
注意
在配置端口转发之前,再次验证端口 443 是否可用:
netstat -an | findstr :443转发端口 443 流量
使用以下命令将流量从 Windows 主机桥接到连接缓存容器:
$ipFilePath = Join-Path ([System.Environment]::GetEnvironmentVariable("MCC_INSTALLATION_FOLDER", "Machine")) "wslIp.txt" $ipAddress = (Get-Content $ipFilePath | Select-Object -First 1).Trim() netsh interface portproxy add v4tov4 listenport=443 listenaddress=0.0.0.0 connectport=443 connectaddress=$ipAddress这将设置端口代理,以便将端口 443 上的传入流量重定向到容器的内部 IP。
在防火墙中打开端口 443
即使已实施端口转发,Windows 防火墙也可能会阻止端口 443 上的传入或传出流量。 使用以下命令确保 HTTPS 流量可以自由地流入和流出连接缓存。
[void](New-NetFirewallRule -DisplayName "WSL2 Port Bridge (HTTPS)" -Direction Inbound -Action Allow -Protocol TCP -LocalPort "443") [void](New-NetFirewallRule -DisplayName "WSL2 Port Bridge (HTTPS)" -Direction Outbound -Action Allow -Protocol TCP -LocalPort "443")
有关如何进一步验证证书导入的说明,请参阅 Windows 上的 HTTPS 验证页面。
禁用 HTTPS 支持
如果需要将连接缓存还原为仅 HTTP 通信,请执行以下步骤。 此过程不会删除 Certificates 文件夹中的任何内容,包括 CSR 文件、证书和日志。
以管理员身份打开 PowerShell 并导航到 PowerShell 脚本文件夹。
配置参数
disableTls.ps1并使用指定的值运行脚本。基本语法
.\disableTls.ps1 [Required Parameters]必需参数
参数 描述 -mccRunTimeAccount运行连接缓存软件的帐户。 这应该是一个 PowerShell 变量,其中包含要指定为连接缓存运行时帐户的帐户的用户名。 例如, $User = "LocalMachineName\Username"对于本地用户帐户。 如果使用组托管服务帐户 (gMSA) ,则应将其格式设置为"Domain\Username$".-mccLocalAccountCredential连接缓存运行时帐户的 PowerShell 凭据对象。 仅当使用本地用户帐户、域用户帐户或服务帐户时才需要这样做。 例如, $myLocalAccountCredential = Get-Credential。注意
该
-mccRunTimeAccount参数在 Connected Cache Windows 应用程序 v1.0.26.0 及更高版本中可用。 如果使用的是早期的 v1.0.24.0 应用程序,请用于本地用户、域用户和服务帐户,或-RunTimeAccount用于-RunTimeAccountName组托管服务帐户 (gMSA) 。示例
.\disableTls.ps1 ` -mccRunTimeAccount $myLocalAccountCredential.Username ` -mccLocalAccountCredential $myLocalAccountCredential `验证禁用过程是否已成功完成。
禁用 HTTPS 后,HTTP 请求应有效,而 HTTPS 请求应失败。 有关如何测试此问题的说明,请参阅 Windows 上的 HTTPS 验证页面 。