本文提供有关如何在 Linux 上运行适用于企业和教育的 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
以下 curl 命令同时测试 HTTP 和 HTTPS 内容检索:
HTTPS 测试:
curl -v -o /dev/null "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 -v -o /dev/null "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]
服务端验证
在 Linux 主机计算机上执行以下测试:
使用 wget 测试连接性:
wget --server-response --spider --header="host: swda01-mscdn.manage.microsoft.com" "https://[mcc-connection]/[test-url]"预期结果:
HTTP/1.1 200 OK指示成功的 HTTPS 连接。验证证书详细信息:
echo | openssl s_client -connect [mcc-connection]:443 -servername [mcc-connection] 2>/dev/null | openssl x509 -text -noout预期结果: 证书详细信息(包括使用者、颁发者和 SAN 值)应与配置匹配。
检查容器状态和日志:
# Check if the Connected Cache container is running sudo docker ps | grep mcc # View recent container logs for HTTPS activity sudo docker logs --tail 50 $(sudo docker ps -q --filter ancestor=mcr.microsoft.com/mcc/linux)预期结果: 容器应处于“已启动”状态,日志应显示 TLS/SSL 活动且不会出现错误。
测试 SSL/TLS 握手:
在不验证证书的情况下测试 SSL/TLS 握手:
# Basic connection test openssl s_client -connect [mcc-server]:443 # Test with SNI (Server Name Indication) openssl s_client -connect [mcc-server]:443 -servername [hostname] # View certificate details during connection echo | openssl s_client -connect [mcc-server]:443 2>/dev/null | openssl x509 -noout -text
客户端验证
在客户端设备上运行以下命令, (而不是 Linux 主机) 。
前提: 确保主机通过策略成为目标。 将连接的缓存 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,指示缓存成功。
如果连接的缓存 Linux 服务器 Windows 客户端,请从这些计算机中测试以下内容:
# Test TCP connection Test-NetConnection -ComputerName [mcc-server] -Port 443 # Test HTTPS connection Invoke-WebRequest -Uri "https://[mcc-server]/" -UseBasicParsing # View certificate details $cert = [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} Invoke-WebRequest -Uri "https://[mcc-server]/"测试端口 443 是否可访问:
# Using telnet telnet [mcc-server-ip] 443 # Using nc (netcat) nc -zv [mcc-server-ip] 443 # Using nmap (if installed) nmap -p 443 [mcc-server-ip]
疑难解答
如果在验证过程中遇到以下任何常见错误,请使用以下故障排除方法:
重要提示
在下面的所有命令中替换 [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 -v -k -o /dev/null "https://[mcc-connection]/[test-url]" --include -H "host:swda01-mscdn.manage.microsoft.com"
如果测试成功: 证书存在验证问题。 验证:
- SAN 配置与连接方法匹配
- CA 根证书安装在客户端的受信任存储中
如果测试失败: 请参阅下面的 连接错误 。
证书吊销错误
症状: HTTPS 响应缓慢或超时
快速测试:
curl -v --ssl-no-revoke -o /dev/null "https://[mcc-connection]/[test-url]" --include -H "host:swda01-mscdn.manage.microsoft.com"
如果测试成功: 无法访问分发点的 CA 证书吊销列表 (CRL) 。 检查防火墙是否允许访问 CRL URL。
如果测试失败: 请参阅下面的 连接错误 。
连接错误
症状:Connection refused, Could not resolve host
对于 HTTPS 连接错误:
验证是否已正确配置防火墙规则
检查是否有其他服务正在使用端口 443:
sudo ss -tulpn | grep :443验证连接的缓存容器是否正在运行:
sudo docker ps | grep mcc
对于 HTTP 连接错误: 验证连接的缓存服务是否正在运行以及端口 80 是否可访问
sudo ss -tulpn | grep :80
对于 DNS 解析问题: 验证主机名解析和网络连接
nslookup [mcc-connection]
# OR
dig [mcc-connection]
公司代理干扰
症状: 尽管配置正确,证书验证仍失败。
解决 方案: 确保公司代理不会拦截到已连接缓存服务器的 HTTPS 流量。 请考虑禁用内部连接缓存流量的 TLS 检查。