Share via


建立自我簽署的公用憑證來驗證您的應用程式

Microsoft Entra ID 支援兩種類型的服務主體驗證: 密碼型驗證 (應用程式密碼)和 憑證型驗證。 雖然應用程式秘密可以輕鬆地在 Azure 入口網站 中建立,或使用 Microsoft Graph 之類的 Microsoft API,但它們是長期存在的,而且不像憑證那麼安全。 因此,建議您的應用程式使用憑證,而不是秘密。

若要進行測試,您可以使用自我簽署的公開憑證,而不是證書頒發機構單位(CA)簽署的憑證。 在此操作說明中,您將使用PowerShell來建立和匯出自我簽署憑證。

警告

自我簽署憑證是未由信任的第三方 CA 簽署的數字證書。 自我簽署憑證是由負責簽署網站或軟體的公司或開發人員所建立、發行和簽署。 這就是為什麼自我簽署憑證在公開網站和應用程式中被視為不安全的原因。

使用 PowerShell 建立憑證時,您可以指定密碼編譯和哈希演算法、憑證有效期間和功能變數名稱等參數。 接著,您可以視您的應用程式需求而定,使用或不使用其私鑰來匯出憑證。

起始驗證會話的應用程式需要私鑰,而確認驗證的應用程式需要公鑰。 因此,如果您要從 PowerShell 傳統型應用程式驗證至 Microsoft Entra ID,則只會匯出公鑰(.cer檔案),並將它上傳至 Azure 入口網站。 PowerShell 應用程式會使用來自本機證書存儲的私鑰來起始驗證,並取得存取令牌,以呼叫 Microsoft Graph 之類的 Microsoft API。

您的應用程式也可能從另一部計算機執行,例如 Azure 自動化。 在此案例中,您會從本機證書存儲匯出公開和私鑰組、將公鑰上傳至 Azure 入口網站,以及私鑰 (.pfx 檔案) 以 Azure 自動化。 在 Azure 自動化 中執行的應用程式會使用私鑰來起始驗證,並取得存取令牌,以呼叫 Microsoft Graph 之類的 Microsoft API。

本文使用 New-SelfSignedCertificate PowerShell Cmdlet 來建立自我簽署憑證和 Export-Certificate Cmdlet,將它匯出至容易存取的位置。 這些 Cmdlet 內建至新式版本的 Windows(Windows 8.1 和更新版本,以及 Windows Server 2012R2 和更新版本)。 自我簽署憑證會有下列設定:

  • 2048 位金鑰長度。 雖然支援較長的值,但強烈建議使用 2048 位大小,以獲得最佳安全性和效能組合。
  • 使用 RSA 密碼編譯演算法。 Microsoft Entra 識別碼目前僅支援 RSA。
  • 憑證會使用SHA256哈希演算法簽署。 Microsoft Entra ID 也支援使用 SHA384 和 SHA512 哈希演演算法簽署的憑證。
  • 憑證僅有效一年。
  • 支援憑證用於客戶端和伺服器驗證。

若要自定義憑證的開始和到期日和其他屬性,請參閱 New-SelfSignedCertificate

建立和導出您的公開憑證

使用此方法建立的憑證,從從您計算機執行的應用程式進行驗證。 例如,從 PowerShell 進行驗證。

在 PowerShell 提示字元中,執行下列命令,並將 PowerShell 控制台會話保持開啟。 將取代 {certificateName} 為您想要提供給憑證的名稱。

$certname = "{certificateName}"    ## Replace {certificateName}
$cert = New-SelfSignedCertificate -Subject "CN=$certname" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256

$cert上一個命令中的 變數會將憑證儲存在目前的會話中,並可讓您匯出它。

下列命令會以.cer格式導出憑證。 您也可以以 Azure 入口網站 支援的其他格式匯出它,包括 .pem.crt


Export-Certificate -Cert $cert -FilePath "C:\Users\admin\Desktop\$certname.cer"   ## Specify your preferred location

您的憑證現在已準備好上傳至 Azure 入口網站。 上傳之後,擷取憑證指紋,以用來驗證您的應用程式。

(選擇性):使用其私鑰導出您的公開憑證

如果您的應用程式將從另一部計算機或雲端執行,例如 Azure 自動化,您也需要私鑰。

遵循上述命令,為您的憑證私鑰建立密碼,並將它儲存在變數中。 將取代 {myPassword} 為您想要用來保護憑證私鑰的密碼。


$mypwd = ConvertTo-SecureString -String "{myPassword}" -Force -AsPlainText  ## Replace {myPassword}

使用您在變數中 $mypwd 儲存的密碼,使用 命令保護並匯出私鑰;


Export-PfxCertificate -Cert $cert -FilePath "C:\Users\admin\Desktop\$certname.pfx" -Password $mypwd   ## Specify your preferred location

您的憑證(.cer檔案)現在已準備好上傳至 Azure 入口網站。 私鑰 (.pfx 檔案) 已加密,無法由其他合作物件讀取。 上傳之後,擷取憑證指紋,您可用來驗證應用程式。

選擇性工作:從金鑰存放區刪除憑證。

您可以執行下列命令來擷取憑證指紋,以從個人存放區刪除密鑰組。


Get-ChildItem -Path "Cert:\CurrentUser\My" | Where-Object {$_.Subject -Match "$certname"} | Select-Object Thumbprint, FriendlyName

然後,複製顯示的指紋,並用它來刪除憑證及其私鑰。


Remove-Item -Path Cert:\CurrentUser\My\{pasteTheCertificateThumbprintHere} -DeleteKey

瞭解您的憑證到期日

您遵循上述步驟所建立的自我簽署憑證在到期前的存留期有限。 在 Azure 入口網站 的 [應用程式註冊] 區段中,[憑證與秘密] 畫面會顯示憑證的到期日。 如果您使用 Azure 自動化,自動化帳戶上的 [憑證] 畫面會顯示憑證的到期日。 請遵循先前的步驟來建立新的自我簽署憑證。

下一步

在 Microsoft Entra ID 中管理同盟單一登錄的憑證