本文提供有关在 Windows 主机上运行的 Microsoft Connected Cache for Enterprise 和 Education 节点上启用 HTTPS 支持的说明。
安装过程需要在主机上生成证书签名请求 (CSR) ,使用企业或公共 PKI 对 CSR 进行签名,然后导入回主机计算机。
必备条件
在设置 HTTPS 功能之前,请确保满足以下要求:
缓存节点使用 GA 软件版本
- 打开Azure 门户并导航到托管缓存节点的“连接缓存企业版”资源。
- 在 “缓存节点管理”下,找到要启用 HTTPS 的缓存节点。
- 验证节点是否为 GA 版本 - 应在“ 已迁移 ”列中显示“是”或“N/A”。
- 如果不是正式版 (“否”,请在“ 迁移 ”列) 选择缓存节点,导航到“ 部署 ”选项卡,然后按照说明重新部署连接的缓存。
访问证书颁发机构 (CA)
你需要访问企业 PKI 或公共 CA。 如果使用企业 PKI,检查组织向 CA 提交 CSR 的要求。
文档客户端连接方法
请注意客户端用于连接到连接的缓存服务器的 IP 地址或主机名 (FQDN) 。 在生成 CSR 的过程中,此值将用作 SAN) 输入 (使用者可选名称。
确保端口 443 可用性
若要与连接的缓存建立 HTTPS 连接,需要在主机上提供端口 443。 运行以下命令以检查:
netstat -an | findstr :443输出示例 含义 TCP 0.0.0.0:443 0.0.0.0:0 正在侦听 端口 443 处于打开状态,正在侦听传入连接。 继续执行 HTTPS 设置。 无输出 端口 443 未使用或未侦听。 继续执行 HTTPS 设置。 TCP [你的 IP]:443 [远程 IP]:[端口] 已建立 端口 443 正在连接中主动使用。 在连接缓存可以使用端口 443 之前,需要停止冲突的服务。 验证公司代理配置
例如,如果防火墙或公司代理 (通过 TLS 检查) 拦截到连接的缓存服务器的 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、EC、ED25519或ED448-keySizeOrCurve对于 RSA:密钥大小 ( 2048、3072、4096) 。 对于 EC:曲线名称 (prime256v1,secp384r1) 。 对于 ED25519 和 ED448:不需要密钥大小。-csrNameCSR 文件所需的名称 -RunTimeAccountName运行连接缓存软件的帐户。 这应该是一个 PowerShell 变量,其中包含要指定为连接缓存运行时帐户的帐户的用户名。 例如, $User = "LocalMachineName\Username"对于本地用户帐户。 如果使用组托管服务帐户 (gMSA) ,则应将其格式设置为"Domain\Username$"。-mccLocalAccountCredential连接的缓存运行时帐户的 PowerShell 凭据对象。 仅当使用本地用户帐户、域用户帐户或服务帐户时,才需要这样做。 命令 $myLocalAccountCredential = Get-Credential可用于将凭据检索 GUI 排队。注意
如果使用 gMSA 运行时帐户,请使用 参数
-RunTimeAccount而不是-RunTimeAccountName。下一版本的 Windows 安装程序中将修复此差异。
使用者参数
参数 必需 说明 示例 -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"-sanIpIP 地址 (逗号分隔) "127.0.0.1,192.168.1.100"-sanUriURI (逗号分隔) "https://example.com,http://localhost"-sanEmailEmail地址 (逗号分隔) "admin@example.com,user@domain.com"-sanRid已注册的 ID (逗号分隔) -sanDirName目录名称 (逗号分隔) -sanOtherName其他名称 (逗号分隔) 有关 CSR 脚本参数的更多详细信息和基于方案的示例,请参阅 Windows 上的 HTTPS 参考
验证 CSR 生成过程是否已成功完成。
如果遇到错误,请在脚本输出中指定的文件夹中找到带时间戳
GenerateCsr.log的文件。 查找以“检查日志以获取详细错误信息”开头的输出行:目录以 (...\Certificates\logs) 结尾。- 文件格式: GenerateCsr_YYYYMMDD-HHMMSS.log
- 例: GenerateCsr_20251201_143022.log是创建于 2025 年 12 月 1 日下午 2:30:22 的文件
在主机上的 “证书”文件夹中 找到生成的 CSR 文件,并在必要时传输该文件
在脚本输出中指定 “证书”文件夹 的位置,从“创建于...”的 CSR 文件开始。 目录以 (...\Certificates\certs) 结尾。
签署 CSR
选择公共或企业证书颁发机构 (CA) 以签署 CSR
重要提示
CA 签名必须与客户端受信任的根存储中的根证书匹配。
大多数客户使用其企业 PKI 基础结构来签署其 CSR。 如果需要使用公共 CA,请考虑以下资源:
- DigiCert 证书实用工具
- 让我们加密 CSR 过程
- 具有 Intune - 的云 PKI 适用于已利用Intune的企业方案。
将 CSR 提交到所选的 CA 并保存已签名的证书。
已签名证书必须采用 X.509 编码的 .crt 格式。 如果 CA 提供其他格式,检查 Windows 上的 HTTPS 参考,了解如何转换为 .crt 格式。
注意
连接的缓存 当前不支持密码保护格式 (.pfx、.p12、.p7b) 。 作为证书自动化路线图的一部分,将立即添加对这些的支持。
验证签名证书的格式是否正确。
确认 PEM 编码:
Get-Content "xxxx.crt" | Select-String "BEGIN CERTIFICATE"预期成功输出:
-----BEGIN CERTIFICATE-----将已签名的证书移动到 Windows 主机上的 “证书”文件夹 。
这将是在生成 CSR 后最初找到的同一文件夹: (...\Certificates\certs) 。
注意
不共享私钥,连接缓存仅需要签名证书。
导入已签名 TLS 证书
注意
该 importCert 脚本当前 不支持 :
- 使用 gMSA 运行时帐户在 Windows Server 2022 或 Windows Server 2025 上运行的缓存节点。
-
-RunTimeAccountName在受支持的 Windows 版本上使用 gMSA 时, (改用-RunTimeAccount) 。
这两个问题将在下一版本的 Windows 安装程序中得到解决。
以管理员身份打开 PowerShell 并导航到包含其 PowerShell 脚本的“连接缓存”文件夹。
配置 的参数
importCert.ps1,并使用指定的值运行脚本。基本语法
.\importCert.ps1 [Required Parameters]必需参数
参数 说明 -certName带或不带 .crt 扩展名的已签名 TLS 证书的完整文件名 () -RunTimeAccountName运行连接缓存软件的帐户。 这应该是一个 PowerShell 变量,其中包含要指定为连接缓存运行时帐户的帐户的用户名。 例如, $User = "LocalMachineName\Username"对于本地用户帐户。 如果使用组托管服务帐户 (gMSA) ,则应将其格式设置为"Domain\Username$"。-mccLocalAccountCredential连接的缓存运行时帐户的 PowerShell 凭据对象。 仅当使用本地用户帐户、域用户帐户或服务帐户时,才需要这样做。 例如, $myLocalAccountCredential = Get-Credential。例
.\importCert.ps1 ` -RunTimeAccountName $myLocalAccountCredential.Username ` -LocalAccountCredential $myLocalAccountCredential ` -certName "myTlsCert.crt"验证导入过程是否已成功完成。
如果遇到错误,请在脚本输出中指定的文件夹中找到带时间戳
ImportCert.log的文件。 查找以“可在此处找到日志:...”开头的输出行- 文件格式: ImportCert_YYYYMMDD-HHMMSS.log
- 例: ImportCert_20251201_143022.log是创建于 2025 年 12 月 1 日下午 2:30:22 的文件
确保外部客户端可以通过端口 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 的通信,请执行以下步骤。 此过程不会删除“证书”文件夹中的任何内容,包括 CSR 文件、证书和日志。
以管理员身份打开 PowerShell 并导航到 PowerShell 脚本文件夹。
配置 的参数
disableTls.ps1,并使用分离值运行脚本。基本语法
.\disableTls.ps1 [Required Parameters]必需参数
参数 说明 -RunTimeAccountName运行连接缓存软件的帐户。 这应该是一个 PowerShell 变量,其中包含要指定为连接缓存运行时帐户的帐户的用户名。 例如, $User = "LocalMachineName\Username"对于本地用户帐户。 如果使用组托管服务帐户 (gMSA) ,则应将其格式设置为"Domain\Username$"。-mccLocalAccountCredential连接的缓存运行时帐户的 PowerShell 凭据对象。 仅当使用本地用户帐户、域用户帐户或服务帐户时,才需要这样做。 例如, $myLocalAccountCredential = Get-Credential。注意
如果使用 gMSA,请使用 参数
-RunTimeAccount而不是-RunTimeAccountName。 此差异很快将在脚本中得到修复。例
.\disableTls.ps1 ` -RunTimeAccountName $myLocalAccountCredential.Username ` -LocalAccountCredential $myLocalAccountCredential `验证禁用过程是否已成功完成。
禁用 HTTPS 后,HTTP 请求应正常工作,而 HTTPS 请求应失败。 有关如何测试此验证的说明,请参阅 Windows 上的 HTTPS 验证页 。