使用 PowerShell 來產生並匯出點對站的憑證

點對站連線使用憑證進行驗證。 本文說明如何使用 Windows 10 或 Windows Server 2016 中的 PowerShell 建立自我簽署的根憑證,以及產生用戶端憑證。 如果您要尋找不同的憑證指示,請參閱憑證 - Linux憑證 - MakeCert

本文中的步驟適用于 Windows 10 或 Windows Server 2016。 用於產生憑證的 PowerShell Cmdlet 是作業系統的一部分,在其他 Windows 版本上無法運作。 因此,您需要 Windows 10 或 Windows Server 2016 電腦來產生憑證。 產生憑證之後,您即可上傳憑證或將其安裝在任何支援的用戶端作業系統上。

如果您無法使用 Windows 10 或 Windows Server 2016 電腦,則可以使用 MakeCert 來產生憑證。 使用任一種方法所產生的憑證均可安裝在任何支援的用戶端作業系統上。

建立自我簽署根憑證

您可以使用 New-SelfSignedCertificate Cmdlet 來建立自我簽署的根憑證。 如需其他的參數資訊,請參閱 New-SelfSignedCertificate

  1. 從執行 Windows 10 或 Windows Server 2016 的電腦,以提高的權限開啟 Windows PowerShell 主控台。 這些範例無法在 Azure Cloud Shell 的「試試看」中運作。 您必須在本機執行這些範例。

  2. 使用下列範例建立自我簽署的根憑證。 下列範例會建立名為 'P2SRootCert' 的自我簽署的根憑證,其自動安裝在 'Certificates-Current User\Personal\Certificates' 中。 您可以開啟 certmgr.msc 或 [管理使用者憑證] 來檢視憑證。

    使用 Cmdlet 登入 Connect-AzAccount 。 然後,執行下列範例,並進行任何必要的修改。

    $cert = New-SelfSignedCertificate -Type Custom -KeySpec Signature `
    -Subject "CN=P2SRootCert" -KeyExportPolicy Exportable `
    -HashAlgorithm sha256 -KeyLength 2048 `
    -CertStoreLocation "Cert:\CurrentUser\My" -KeyUsageProperty Sign -KeyUsage CertSign
    
  3. 讓 PowerShell 主控台保持開啟,然後繼續進行下一個步驟,以產生用戶端憑證。

產生用戶端憑證

每個使用點對站連線至 VNet 的用戶端電腦都必須安裝用戶端憑證。 您可以從自我簽署根憑證產生用戶端憑證,然後匯出及安裝用戶端憑證。 如果未安裝用戶端憑證,則驗證會失敗。

下列步驟將逐步引導您完成從自我簽署的根憑證產生用戶端憑證。 您可以從相同根憑證產生多個用戶端憑證。 當您使用下列步驟產生用戶端憑證時,用戶端憑證會自動安裝在您用來產生憑證的電腦上。 如果您想要在另一部用戶端電腦上安裝用戶端憑證,您可以匯出憑證。

此範例會使用 New-SelfSignedCertificate Cmdlet 來產生有效期為一年的用戶端憑證。 如需其他的參數資訊 (例如針對用戶端憑證設定不同的到期值),請參閱 New-SelfSignedCertificate

範例 1-PowerShell 主控台會話仍開啟

如果您在建立自我簽署根憑證後沒有關閉 PowerShell 主控台,請使用此範例。 此範例會從上一節的內容繼續,並使用宣告的 '$cert' 變數。 如果您在建立自我簽署根憑證之後關閉 PowerShell 主控台,或是在新的 PowerShell 主控台會話中建立其他用戶端憑證,請使用 範例 2中的步驟。

修改並執行範例以產生用戶端憑證。 如果您執行下列範例,但未加以修改,結果會是名為 'P2SChildCert' 的用戶端憑證。 如果您要將子憑證命名為其他名稱,請修改 CN 值。 執行這個範例時,請勿變更 TextExtension。 您產生的用戶端憑證會自動安裝在您電腦的 'Certificates - Current User\Personal\Certificates' 中。

New-SelfSignedCertificate -Type Custom -DnsName P2SChildCert -KeySpec Signature `
-Subject "CN=P2SChildCert" -KeyExportPolicy Exportable `
-HashAlgorithm sha256 -KeyLength 2048 `
-CertStoreLocation "Cert:\CurrentUser\My" `
-Signer $cert -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.2")

範例 2-新增 PowerShell 主控台會話

如果您要建立其他用戶端憑證,或者不是使用您用來建立自我簽署根憑證的相同 PowerShell 工作階段,請使用下列步驟︰

  1. 識別安裝在電腦上的自我簽署根憑證。 此 Cmdlet 會傳回安裝於電腦上的憑證清單。

    Get-ChildItem -Path "Cert:\CurrentUser\My"
    
  2. 從傳回的清單尋找主體名稱,然後將其旁邊的指紋複製到文字檔。 在下列範例中,有兩個憑證。 CN 名稱是您要從中產生子憑證之自我簽署根憑證的名稱。 在此例中為 'P2SRootCert'。

    Thumbprint                                Subject
    ----------                                -------
    AED812AD883826FF76B4D1D5A77B3C08EFA79F3F  CN=P2SChildCert4
    7181AA8C1B4D34EEDB2F3D3BEC5839F3FE52D655  CN=P2SRootCert
    
  3. 使用上一個步驟中的指紋,為根憑證宣告一個變數。 將 THUMBPRINT 替換為您要從中產生子憑證之根憑證的指紋。

    $cert = Get-ChildItem -Path "Cert:\CurrentUser\My\<THUMBPRINT>"
    

    例如,使用上一個步驟中的 P2SRootCert 的指紋,變數會如下所示︰

    $cert = Get-ChildItem -Path "Cert:\CurrentUser\My\7181AA8C1B4D34EEDB2F3D3BEC5839F3FE52D655"
    
  4. 修改並執行範例以產生用戶端憑證。 如果您執行下列範例,但未加以修改,結果會是名為 'P2SChildCert' 的用戶端憑證。 如果您要將子憑證命名為其他名稱,請修改 CN 值。 執行這個範例時,請勿變更 TextExtension。 您產生的用戶端憑證會自動安裝在您電腦的 'Certificates - Current User\Personal\Certificates' 中。

    New-SelfSignedCertificate -Type Custom -DnsName P2SChildCert -KeySpec Signature `
    -Subject "CN=P2SChildCert" -KeyExportPolicy Exportable `
    -HashAlgorithm sha256 -KeyLength 2048 `
    -CertStoreLocation "Cert:\CurrentUser\My" `
    -Signer $cert -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.2")
    

匯出根憑證公開金鑰 (.cer)

建立自我簽署根憑證之後,請匯出根憑證公開金鑰.cer 檔案 (而非私密金鑰)。 您稍後會將此檔案上傳至 Azure。 下列步驟可協助您匯出自我簽署根憑證的 .cer 檔案:

  1. 若要取得憑證的 .cer 檔案,請開啟 [管理使用者憑證]。 找出自我簽署的根憑證,通常位於 '[憑證 - 目前的使用者][個人][憑證]' 中,然後按一下滑鼠右鍵。 按一下 [所有工作],然後按一下 [匯出]。 這會開啟 [憑證匯出精靈] 。 若您在 Current User\Personal\Certificates 下找不到憑證,您可能已意外開啟 [憑證 - 本機電腦],而非 [憑證 - 目前使用者]。 若要使用 PowerShell 在目前使用者範圍開啟 [憑證管理員],您必須在主控台視窗中輸入 certmgr

    螢幕擷取畫面顯示已選取憑證之目前使用者的 [憑證] 視窗,以及已從所有工作選取 [匯出] 的內容功能表。

  2. 在精靈中按 [下一步]。

    匯出憑證

  3. 選取 [否,不要匯出私密金鑰],然後按 [下一步]。

    不要匯出私密金鑰

  4. 在 [匯出檔案格式] 頁面上,選取 [Base-64 編碼 X.509 (.CER)],然後按 [下一步]。

    Base-64 編碼

  5. 針對 [要匯出的檔案],[瀏覽] 至您要匯出憑證的位置。 針對 [檔案名稱] ,請為憑證檔案命名。 然後按 [下一步] 。

    螢幕擷取畫面顯示 [憑證匯出嚮導] 的 [檔案名] 文字方塊和 [流覽] 選項。

  6. 按一下 [完成] 匯出憑證。

    螢幕擷取畫面顯示具有所選取設定的憑證匯出嚮導。

  7. 已成功匯出您的憑證。

    螢幕擷取畫面顯示匯出成功的訊息。

  8. 匯出的憑證如下所示:

    螢幕擷取畫面顯示憑證圖示和副檔名為 c e r 的檔案名。

  9. 如果您使用「記事本」開啟匯出的憑證,您會看到類似於此範例的內容。 以藍色標示的部分包含上傳至 Azure 的資訊。 如果您使用「記事本」開啟您的憑證,但並未顯示這樣的內容,這通常表示您未使用 Base-64 編碼 X.509 (.CER) 格式加以匯出。 此外,如果您想要使用不同的文字編輯器,請了解某些編輯器可能會在背景中導入非預期的格式。 這可能會在此憑證中的文字上傳至 Azure 時產生問題。

    使用記事本開啟

匯出自我簽署根憑證和私密金鑰來儲存它 (選擇性)

您可能想要匯出自我簽署的根憑證,並將它安全地儲存作為備份。 如有需要,您可以稍後在另一部電腦上安裝這個自我簽署憑證,然後產生更多用戶端憑證。 若要將自我簽署的根憑證匯出為 .pfx,請選取根憑證,然後使用與匯出用戶端憑證所述的相同步驟來匯出。

匯出用戶端憑證

當您產生用戶端憑證時,它會自動安裝於您用來產生它的電腦上。 如果您想要在另一部用戶端電腦上安裝用戶端憑證,您必須匯出您所產生的用戶端憑證。

  1. 若要匯出用戶端憑證,請開啟 [管理使用者憑證]。 根據預設,您產生的用戶端憑證位於 'Certificates - Current User\Personal\Certificates'。 以滑鼠右鍵按一下您要匯出的用戶端憑證,按一下 [ 所有 工作],然後按一下 [ 匯出 ] 以開啟 [ 憑證匯出嚮導]

    螢幕擷取畫面:顯示目前使用者的 [憑證] 視窗,其中選取了 [憑證] 和 [從所有工作選取匯出]。

  2. 在 [憑證匯出精靈] 中,按 [下一步] 繼續作業。

    螢幕擷取畫面顯示「憑證匯出嚮導」歡迎使用訊息。

  3. 選取 [是,匯出私密金鑰],然後按 [下一步]。

    匯出私密金鑰

  4. 在 [匯出檔案格式] 頁面上,保留選取預設值。 務必選取 [如果可能的話,包含憑證路徑中的所有憑證]。 此設定會額外匯出成功的用戶端驗證所需的根憑證資訊。 若缺少這項資訊,用戶端驗證即會因為用戶端沒有信任的根憑證而失敗。 然後按 [下一步] 。

    匯出檔案格式

  5. 在 [安全性] 頁面上,您必須保護私密金鑰。 如果您選取要使用密碼,請務必記錄或牢記您為此憑證設定的密碼。 然後按 [下一步] 。

    螢幕擷取畫面顯示 [憑證匯出嚮導] 安全性頁面,其中包含輸入並確認的密碼,並在下一個反白顯示。

  6. 在 [要匯出的檔案] 中,[瀏覽] 到您要匯出憑證的位置。 針對 [檔案名稱] ,請為憑證檔案命名。 然後按 [下一步] 。

    要匯出的檔案

  7. 按一下 [完成] 匯出憑證。

    螢幕擷取畫面顯示具有所輸入設定的憑證匯出 Wizard。

安裝匯出的用戶端憑證

透過 P2S 連線連接至 VNet 的每個用戶端都需要以本機方式安裝用戶端憑證。

若要安裝用戶端憑證,請參閱安裝點對站連線的用戶端憑證

下一步

繼續使用您的點對站設定。