在 Windows 上啟用 Microsoft Connected Cache 的 HTTPS 支援

本文提供如何在 Windows 主機上運行的適用於企業和教育的 Microsoft 網內快取節點啟用 HTTPS 支援的說明。

設定過程需要在您的主機上產生憑證簽署請求 (CSR) ,並使用企業或公共 PKI 簽署 CSR,然後匯入回主機。

必要條件

在設定 HTTPS 功能前,請確保以下需求已達成:

  • 快取節點採用 GA 軟體版本

    1. 打開 Azure 入口網站,並導航到存放你快取節點的企業連線快取資源。
    2. 快取節點管理中,找到你想啟用 HTTPS 的快取節點。
    3. 確認節點是否在 GA 版本——遷移欄中應該會顯示「是」或「不適用」。
    4. 如果 GA 版本沒有,則在 遷移欄 () 的「No」中選出快取節點,導覽到 部署 標籤,依指示重新部署已連接快取。
  • 取得憑證授權機構 (CA)

    你需要存取企業 PKI 或公共 CA。 如果使用企業PKI,請查看貴組織對向CA提交CSR的要求。

  • 文件客戶端連接方法

    請注意 FQDN (IP 位址或主機名稱,) 用戶端用來連接你的 Connected Cache 伺服器。 此值將作為主體替代名稱 (SAN) 輸入,用於產生CSR的過程中。

  • 確保 443 埠可用

    要建立與 Connected Cache 的 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 埠正被其他服務積極使用。 在 Connected Cache 使用 443 埠之前,先找出並停止衝突服務。

    提示

    要識別使用 443 埠的服務,請執行 netstat -ano | findstr :443 以尋找程序 ID (最後一欄的 PID) 。 然後用實際的號碼) 替 tasklist /fi "pid eq <PID>"<PID> (來查看程序名稱。 常見使用 443 埠的服務包括 IIS、其他網頁伺服器及 VPN 軟體。 在繼續之前,請先停止或重新設定衝突的服務。

  • 驗證企業代理設定

    例如,如果您的防火牆或企業代理透過 TLS 檢查) (攔截到 Connected Cache 伺服器的 HTTPS 流量,憑證驗證無論如何設定都會失敗。

欲了解更多任何先修條件,請參閱 HTTPS on Windows 參考頁面

產生憑證簽署請求 (CSR)

重要

每個快取節點都需要自己的 CSR/憑證 (無法共享) :

  • 使用一致的命名方式:mcc-node1.company.com、mcc-node2.company.com 等。
  • 記錄哪個憑證屬於哪個節點
  • 萬用卡憑證無法使用。 用於 HTTPS 連接連接 Connected Cache 的 CSR/憑證,為了安全起見,會唯一綁定到每個快取節點。
  1. 以管理員身份開啟 PowerShell,並前往包含其 PowerShell 腳本的 Connected Cache 資料夾。

    執行以下指令以導航至此 Connected Cache 腳本資料夾:

       cd (deliveryoptimization-cli mcc-get-scripts-path)
    
  2. 設定參數 generateCsr.ps1 ,並用你指定的值執行腳本。

    基本語法

       .\generateCsr.ps1 [Required Parameters] [Subject Parameters] [SAN Parameters]
    

    所需參數

    參數 描述
    -algo 憑證演算法: RSAECED25519ED448
    -keySizeOrCurve RSA 的鑰匙大小: (2048、、 3072) 4096 。 對於EC:曲線名稱 (prime256v1,) secp384r1 。 ED25519 和 ED448:不需要按鍵尺寸。
    -csrName CSR 檔案的名稱
    -mccRunTimeAccount 就是執行 Connected Cache 軟體的帳號。 這應該是一個 PowerShell 變數,包含你打算指定為 Connected Cache 執行時帳號的帳號的使用者名稱。 例如, $User = "LocalMachineName\Username" 針對本地使用者帳號。 如果你使用的是群組管理服務帳號 (gMSA) ,格式應該是 "Domain\Username$"
    -mccLocalAccountCredential 一個用於 Connected Cache 執行時帳號的 PowerShell 憑證物件。 這只有在使用本地使用者帳號、網域使用者帳號或服務帳號時才需要。 此指令 $myLocalAccountCredential = Get-Credential 可用來排隊存取憑證的圖形介面。

    注意

    -mccRunTimeAccount 參數可在 Connected Cache Windows 應用程式 v1.0.26.0 及更新版本中取得。 如果你使用的是早期的 v1.0.24.0 應用程式,請用於 -RunTimeAccountName 本地使用者、網域使用者和服務帳號,或 -RunTimeAccount 是 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",憑證驗證就會失敗。

    主詞替代名稱 (至少一個必填)

    參數 描述 範例
    -sanDns DNS 名稱 (逗號分隔) "localhost,example.com,api.example.com"
    -sanIp IP 位址 (逗號分隔) "127.0.0.1,192.168.1.100"
    -sanUri URI (逗號分隔) "https://example.com,http://localhost"
    -sanEmail Email 處理逗號分隔 () "admin@example.com,user@domain.com"
    -sanRid 註冊ID (逗號分隔)
    -sanDirName 目錄名稱 (逗號分隔)
    -sanOtherName 其他名稱 (逗號分隔)

    欲了解更多 CSR 腳本參數的情境範例,請參閱 HTTPS on Windows 參考資料

  3. 驗證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 建立的檔案
  4. 在主機的 憑證資料夾 中找到產生的 CSR 檔案,必要時轉移

    憑證資料夾的位置會在腳本輸出中指定,開頭為「CSR file created at: ...」。 目錄以 (...\Certificates\certs) 結尾。

簽署CSR文件

  1. 選擇一個憑證授權機構 (加州) 簽署CSR。

    重要

    CA 簽章必須與客戶端受信任根儲存庫中的根憑證相符。

    • 企業 PKI:大多數客戶使用組織內部的 PKI 基礎設施來簽署 CSR。 請向你的 IT 或資安團隊查詢,了解你組織向內部 CA 提交 CSR 的流程。

    • 公共 CA:如果你沒有企業 PKI,可以使用公共 CA。 以下資源可以幫助你開始:

  2. 將CSR提交給你選擇的CA,並保存已簽署的證書。

    你簽署的憑證必須是 .crt 格式,並使用 X.509 編碼。 如果你的 CA 有提供其他格式,請參考 HTTPS on Windows 的參考資料 ,了解如何轉換成 .crt 格式。

    注意

    Connected Cache 目前不支援密碼保護格式 (.pfx、.p12、.p7b) 。 這些支援將很快加入,作為我們憑證自動化路線圖的一部分。

  3. 確認簽署憑證的格式正確。

    確認PEM編碼:

    Get-Content "xxxx.crt" | Select-String "BEGIN CERTIFICATE"
    

    預期成功產出:

    -----BEGIN CERTIFICATE-----
    
  4. 把你簽署的憑證移到 Windows 主機上的 Certificates 資料夾

    這會是你最初找到CSR產生的資料夾: (...\Certificates\certs) 。

    注意

    不要分享私鑰,Connected Cache 只需要簽署憑證。

匯入簽署的 TLS 憑證

  1. 以管理員身份開啟 PowerShell,並前往包含其 PowerShell 腳本的 Connected Cache 資料夾。

  2. 設定參數 importCert.ps1 ,並用你指定的值執行腳本。

    基本語法

      .\importCert.ps1 [Required Parameters]
    

    所需參數

    參數 描述
    -certName 你簽署的 TLS 憑證的完整檔名 (有無 .crt 副檔名)
    -mccRunTimeAccount 就是執行 Connected Cache 軟體的帳號。 這應該是一個 PowerShell 變數,包含你打算指定為 Connected Cache 執行時帳號的帳號的使用者名稱。 例如, $User = "LocalMachineName\Username" 針對本地使用者帳號。 如果你使用的是群組管理服務帳號 (gMSA) ,格式應該是 "Domain\Username$"
    -mccLocalAccountCredential 一個用於 Connected Cache 執行時帳號的 PowerShell 憑證物件。 這只有在使用本地使用者帳號、網域使用者帳號或服務帳號時才需要。 例如,$myLocalAccountCredential = Get-Credential

    注意

    -mccRunTimeAccount 參數可在 Connected Cache Windows 應用程式 v1.0.26.0 及更新版本中取得。 如果你使用的是早期的 v1.0.24.0 應用程式,請用於 -RunTimeAccountName 本地使用者、網域使用者和服務帳號,或 -RunTimeAccount 是 gMSA) (群組管理服務帳號。

    注意

    v1.0.24.0 連接快取 Windows 應用程式不支援在 Windows Server 2022 或 Windows Server 2025 上以 gMSA 執行時帳號執行importCert.ps1。 在這些環境中,請使用 v1.0.26.0 或更新版本的應用程式來執行此腳本。

    範例

      .\importCert.ps1 `
        -mccRunTimeAccount $myLocalAccountCredential.Username `
        -mccLocalAccountCredential $myLocalAccountCredential `
        -certName "myTlsCert.crt"
    
  3. 確認匯入流程已成功完成。

    如果遇到錯誤,請在腳本輸出中指定的資料夾中找到時間 ImportCert.log 戳記的檔案。 找那個以「你可以在這裡找到日誌:...」開頭的輸出線

    • 檔案格式: ImportCert_YYYYMMDD-HHMMSS.log
    • 範例: ImportCert_20251201_143022.log 是一個於 2025 年 12 月 1 日下午 2:30:22 建立的檔案
  4. 透過執行 ShowCertDetails.ps1 腳本確認匯入的憑證是正確的。

    注意

    ShowCertDetails.ps1 腳本自 Windows 部署應用程式 v1.0.26 起提供。

    .\ShowCertDetails.ps1
    

    此腳本會顯示目前匯入快取節點的 TLS 憑證的印本與到期日。

  5. 確保連接快取能透過 443 埠對外部用戶端存取。

    注意

    在設定埠轉發前,請再次確認 443 埠是否可用: netstat -an | findstr :443

    前方埠 443 流量

    請使用以下指令將 Windows 主機的流量橋接到 Connected Cache 容器:

     $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 流量能自由流出您的 Connected Cache。

     [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")
    

關於如何進一步驗證憑證匯入的說明,請參閱 HTTPS on Windows 驗證頁面

關閉 HTTPS 支援

如果你需要將已連接快取恢復為僅限 HTTP 通訊,請依照以下步驟操作。 這個過程不會刪除憑證資料夾中的任何東西,包括 CSR 檔案、憑證和日誌。

  1. 以管理員身份開啟 PowerShell,然後進入 PowerShell scripts 資料夾。

  2. 設定參數 disableTls.ps1 ,並用你指定的值執行腳本。

    基本語法

      .\disableTls.ps1 [Required Parameters]
    

    所需參數

    參數 描述
    -mccRunTimeAccount 就是執行 Connected Cache 軟體的帳號。 這應該是一個 PowerShell 變數,包含你打算指定為 Connected Cache 執行時帳號的帳號的使用者名稱。 例如, $User = "LocalMachineName\Username" 針對本地使用者帳號。 如果你使用的是群組管理服務帳號 (gMSA) ,格式應該是 "Domain\Username$"
    -mccLocalAccountCredential 一個用於 Connected Cache 執行時帳號的 PowerShell 憑證物件。 這只有在使用本地使用者帳號、網域使用者帳號或服務帳號時才需要。 例如,$myLocalAccountCredential = Get-Credential

    注意

    -mccRunTimeAccount 參數可在 Connected Cache Windows 應用程式 v1.0.26.0 及更新版本中取得。 如果你使用的是早期的 v1.0.24.0 應用程式,請用於 -RunTimeAccountName 本地使用者、網域使用者和服務帳號,或 -RunTimeAccount 是 gMSA) (群組管理服務帳號。

    範例

      .\disableTls.ps1 `
        -mccRunTimeAccount $myLocalAccountCredential.Username `
        -mccLocalAccountCredential $myLocalAccountCredential `
    
  3. 確認停用程序已成功完成。

  4. 停用 HTTPS 後,HTTP 請求應該能正常運作,而 HTTPS 請求則會失敗。 請參閱 HTTPS on Windows 驗證頁面 ,了解如何測試此功能。

後續步驟