Microsoft Entra ID 對服務主體支援兩種驗證類型:
密碼式驗證
(應用程式祕密) 和
憑證式驗證
。 雖然可以輕鬆透過 Azure 入口網站或使用 Microsoft API (如 Microsoft Graph) 建立應用程式祕密,但這些祕密會長期存留,且不如憑證一樣安全。 因此,建議您的應用程式使用憑證,而不是祕密。
若要進行測試,您可以使用自我簽署公開憑證,而不是憑證授權單位 (CA) 簽署憑證。 在此操作說明中,您將使用 PowerShell 來建立和匯出自我簽署憑證。
自我簽署憑證是未由信任的第三方 CA 簽署的數位憑證。 自我簽署憑證是由負責簽署網站或軟體的公司或開發人員所建立、發行和簽署。 這就是為什麼自我簽署憑證在公開網站和應用程式中被視為不安全的原因。
使用 PowerShell 建立憑證時,您可以指定密碼編譯和雜湊演算法、憑證有效期間和網域名稱等參數。 然後可以根據您的應用程式需求,匯出含有或不含其私密金鑰的憑證。
起始驗證工作階段的應用程式需要私密金鑰,而確認驗證的應用程式則需要公開金鑰。 因此,如果您要從 PowerShell 傳統型應用程式向 Microsoft Entra ID 進行驗證,只要匯出公開金鑰 (
.cer
檔案) 並將其上傳至 Azure 入口網站即可。 PowerShell 應用程式會使用本機憑證存放區中的私密金鑰來起始驗證,並取得呼叫 Microsoft API (如 Microsoft Graph) 的存取權杖。
您的應用程式也可能會從另一部電腦執行 (例如 Azure 自動化)。 在此案例中,您會從本機憑證存放區匯出公開和私密金鑰組,然後將公開金鑰上傳至 Azure 入口網站,並將私密金鑰 (
.pfx
檔案) 上傳至 Azure 自動化。 在 Azure 自動化中執行的應用程式會使用私密金鑰來起始驗證,並取得呼叫 Microsoft API (如 Microsoft Graph) 的存取權杖。
本文使用
New-SelfSignedCertificate
PowerShell Cmdlet 來建立自我簽署憑證,並使用
Export-Certificate
Cmdlet 將其匯出至可輕鬆存取的位置。 新版 Windows (Windows 8.1 和更新版本以及 Windows Server 2012 R2 和更新版本) 中內建這些 Cmdlet。 此自我簽署憑證將會有下列設定:
2048 位元金鑰長度。 雖然支援較長的值,但強烈建議使用 2048 位元大小,以獲得最佳的安全性與效能組合。
使用 RSA 密碼編譯演算法。 Microsoft Entra ID 目前僅支援 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 中管理同盟單一登入的憑證