本文介绍如何使用 WSL (适用于 Linux 的 Windows 子系统) 在 Windows 上运行适用于企业和教育的 Microsoft 连接缓存节点上验证 HTTPS 支持。
测试 HTTP 和 HTTPS 内容下载
在测试之前,需要确定客户端如何连接到连接的缓存服务器。 这是在 CSR 生成期间在证书的使用者可选名称 (SAN) 中配置的相同连接方法。
重要提示
在下面的所有命令中替换 [mcc-connection] 和[test-url]
确定 :[mcc-connection]
-
如果在
-sanIpCSR 中使用了: 使用 IP 地址 (示例:192.168.1.100) -
如果在 CSR 中使用
-sanDns了: 使用主机名 (示例:mcc-server.contoso.com)
[test-url]是测试Intune Win32 应用程序的完整路径:ee344de8-d177-4720-86c1-a076581766f9/070a8fd4-79a7-42c8-b7c8-9883253bb01a/c7b1b825-88b2-4e66-9b15-ff5fe0374bc6.appxbundle.bin
然后,在 Windows 主机上 (连接的缓存服务器) 运行以下 curl 命令,以测试 HTTP 和 HTTPS 内容检索:
HTTPS 测试
curl.exe -v -o NUL "https://[mcc-connection]/[test-url]" --include -H "host:swda01-mscdn.manage.microsoft.com"预期成功输出:
* Connected to [your-server] ([ip-address]) port 443 (#0) * TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 * Server certificate: [your-certificate-subject] < HTTP/1.1 200 OK < Content-Length: [file-size]HTTP 测试
curl.exe -v -o NUL "http://[mcc-connection]/[test-url]" --include -H "host:swda01-mscdn.manage.microsoft.com"预期成功输出:
* Connected to [your-server] ([ip-address]) port 80 (#0) < HTTP/1.1 200 OK < Content-Length: [file-size]
服务端验证
在 Windows 主机计算机上执行以下测试:
使用 PowerShell 测试连接性:
Invoke-WebRequest -Uri "https://[mcc-connection]/[test-url]" -Headers @{"host"="swda01-mscdn.manage.microsoft.com"} -Method Head预期结果:
StatusCode: 200指示成功的 HTTPS 连接。检查 HTTPS 活动的传递优化日志:
# Search for HTTPS connections in recent logs Select-String -Path "C:\Windows\Logs\DeliveryOptimization\*.log" -Pattern "https://" | Select-Object -First 5 # Search for your specific Connected Cache server connections Select-String -Path "C:\Windows\Logs\DeliveryOptimization\*.log" -Pattern "[mcc-connection]" | Select-Object -First 5预期结果: 显示 HTTPS URL 和连接的缓存服务器地址的日志条目表示客户端已成功使用 HTTPS。
客户端验证
在客户端设备上执行以下命令, (而不是 Windows 主机) 。
前提: 确保主机通过策略成为目标。 将连接缓存 IP 地址 (“DOCacheHost”策略) 的值更新为与其环境相关的任何内容:
$parentKeyPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization"
if (!(Test-Path $parentKeyPath))
{
New-Item -Path $parentKeyPath -ItemType RegistryKey -Force -ErrorAction Stop | Out-Null
}
Set-ItemProperty -Path $parentKeyPath -Name "DOCacheHost" -Value "[mcc-connection]" -ErrorAction Stop
通过 HTTPS 从连接的缓存请求 Teams 应用下载:
Add-AppxPackage "https://statics.teams.cdn.office.net/production-windows-x64/enterprise/webview2/lkg/MSTeams-x64.msix"或者
Add-AppxPackage "https://installer.teams.static.microsoft/production-windows-x64/25177.2002.3761.5185/MSTeams-x64.msix"预期结果: 下载完成且没有错误,应比典型的 Internet 下载更快。
检查内容是否实际上正在缓存 (而不仅仅是回退到 CDN) :
Get-DeliveryOptimizationStatus | Select-Object DownloadMode, TotalBytesDownloaded, BytesFromCacheServer预期结果:
BytesFromCacheServer应大于 0,指示缓存成功。
疑难解答
如果在验证过程中遇到以下任何常见错误,请使用以下故障排除方法:
重要提示
在下面的所有命令中替换 [mcc-connection] 和[test-url]
确定 :[mcc-connection]
-
如果在
-sanIpCSR 中使用了: 使用 IP 地址 (示例:192.168.1.100) -
如果在 CSR 中使用
-sanDns了: 使用主机名 (示例:mcc-server.contoso.com)
[test-url]是测试Intune Win32 应用程序的完整路径:ee344de8-d177-4720-86c1-a076581766f9/070a8fd4-79a7-42c8-b7c8-9883253bb01a/c7b1b825-88b2-4e66-9b15-ff5fe0374bc6.appxbundle.bin
证书验证错误
症状:SSL certificate problem, certificate subject name does not match
快速测试:
curl.exe -v -k -o NUL "https://[mcc-connection]/[test-url]"
如果测试成功: 证书存在验证问题。 验证:
- SAN 配置与连接方法匹配
- CA 根证书安装在客户端的受信任存储中
如果测试失败: 请参阅下面的 连接错误 。
证书吊销错误
症状: HTTPS 响应缓慢或超时
快速测试:
curl.exe -v --ssl-no-revoke -o NUL "https://[mcc-connection]/[test-url]"
如果测试成功: 无法访问分发点的 CA 证书吊销列表 (CRL) 。 检查企业防火墙是否允许访问 CRL URL。
如果测试失败: 请参阅下面的 连接错误 。
连接错误
症状:Connection refused, Could not resolve host
对于 HTTPS 连接错误:
验证是否已正确配置防火墙规则和端口转发
检查是否有其他服务正在使用端口 443:
netstat -an | findstr :443
对于 HTTP 连接错误: 验证连接的缓存服务是否正在运行以及端口 80 是否可访问
netstat -an | findstr :80
对于 DNS 解析问题: 验证主机名解析和网络连接
nslookup [mcc-connection]
公司代理干扰
症状: 尽管配置正确,证书验证仍失败。
解决 方案: 确保公司代理不会拦截到已连接缓存服务器的 HTTPS 流量。 请考虑禁用内部连接缓存流量的 TLS 检查。