驗證 Windows 上 Microsoft 連接快取的 HTTPS 設定

本文提供如何在 Windows 上運行並搭配 WSL (Windows 子系統 Linux 版) 的適用於企業和教育的 Microsoft 網內快取節點驗證 HTTPS 支援的說明。

測試 HTTP 與 HTTPS 內容下載

在測試前,你需要先確認用戶端如何連接到你的 Connected Cache 伺服器。 這正是您在 CSR 產生時,憑證主體替代名稱 (SAN) 所設定的連線方式。

重要

在以下所有指令中替換 [mcc-connection][test-url]

要決定你的 [mcc-connection]

  • 如果你在客服中使用 -sanIp 使用 (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 連線成功。

  • 檢查 Delivery Optimization 日誌是否有 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 和你的 Connected Cache 伺服器地址,代表客戶端正在成功使用 HTTPS。

用戶端驗證

請在用戶端裝置執行以下指令 (而非你的 Windows 主機) 。

先決條件: 確保主機透過政策被鎖定。 將「DOCacheHost」政策 () 的已連線快取 IP 位址更新為與其環境相關的值:

   $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 從 Connected Cache 請求下載 Teams 應用程式:

        Add-AppxPackage "https://installer.teams.static.microsoft/production-windows-x64/25177.2002.3761.5185/MSTeams-x64.msix"
    

    預期結果: 下載完成且不會出錯,應該比一般網路下載還快。

  • 請確認內容是否真的被快取 (而不是直接回退到 CDN) :

        Get-DeliveryOptimizationStatus | Select-Object DownloadMode, TotalBytesDownloaded, BytesFromCacheServer
    

    預期結果:BytesFromCacheServer 應該大於 0,表示快取成功。

疑難排解

若驗證步驟失敗,請使用以下測試來找出原因。 每次測試都會繞過連線過程中的一部分。 如果測試成功,你就知道被繞過的部分才是問題所在。

重要

在以下所有指令中替換 [mcc-connection][test-url]

要決定你的 [mcc-connection]

  • 如果你在客服中使用 -sanIp 使用 (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 problemcertificate subject name does not match

診斷測試: 以下指令使用 -k 該旗標來完全跳過憑證驗證。 這會告訴 Curl 在未驗證伺服器憑證的情況下連線。 這樣你就能判斷問題出在哪:是憑證還是其他問題。

   curl.exe -v -k -o NUL "https://[mcc-connection]/[test-url]"

如果測試成功: 伺服器和網路運作正常。 問題出在證書本身。 請確認:

  • SAN 設定會符合你的連線方式 (IP 位址或主機名稱)
  • CA 根憑證安裝在客戶的信任儲存庫中

如果測試失敗: 問題不在證書。 請參見下方 的連線錯誤

憑證撤銷錯誤

症狀: HTTPS 回應緩慢或逾時

診斷測試: 以下指令利用該 --ssl-no-revoke 旗標跳過憑證撤銷清單 (CRL) 檢查。 通常,客戶會聯絡你 CA 的 CRL 分發點確認證書是否被撤銷。 如果該終端無法觸及,會導致延遲或逾時。

   curl.exe -v --ssl-no-revoke -o NUL "https://[mcc-connection]/[test-url]"

如果測試成功: 當跳過撤銷檢查時,連線仍能正常運作,確認用戶端無法連接到 CRL 分發點。 請確認你的防火牆是否允許存取憑證中列出的 CRL URL。

如果測試失敗: 問題不在於撤銷檢查。 請參見下方 的連線錯誤

連線錯誤

症狀:Connection refusedCould not resolve host

如果你完全無法連線, (連線卻) 看到憑證錯誤,問題通常與網路或防火牆有關。

關於 HTTPS 連線錯誤:

  • 請確認防火牆規則和埠轉發設定正確

  • 檢查沒有其他服務使用443埠:

        netstat -an | findstr :443
    

關於 HTTP 連線錯誤: 確認連接快取服務正在執行且埠 80 是否可存取

   netstat -an | findstr :80

關於 DNS 解析問題: 驗證主機名稱解析與網路連線

   nslookup [mcc-connection]

企業代理權干擾

症狀: 憑證驗證即使設定正確,仍失敗。

解決方案: 確保企業代理不會攔截到你連接快取伺服器的 HTTPS 流量。 考慮關閉內部連接快取流量的 TLS 檢查功能。

資源