Share via


使用 Azure 金鑰保存庫 將 TLS/SSL 憑證傳遞至 JVM

本文說明如何將 Azure 金鑰保存庫 整合到 JVM 中,以提供 TLS/SSL 憑證。

將 JCA 提供者新增至 java.security 檔案

若要註冊 JCA 提供者,JVM 必須知道它。 若要完成這項工作,請使用下列步驟:

  1. 在 JVM 安裝內製作 java.security 檔案的複本,並將檔案命名為 my.java.security

  2. 在檔案內,尋找行 security.provider.<maximum-value>。 將 <maximum-value> 佔位元取代為所有項目在這個位置的最大值。 例如: security.provider.13=SunPKCS11

  3. 將這個項目的數目遞增 1。 例如, security.provider.13 應該會變成 security.provider.14

  4. 新增下列這一行:

    security.provider.14=com.azure.security.keyvault.jca.KeyVaultJcaProvider
    

注意

請確定每個 security.provider.<X> 專案都有不同的數位值 <X>,並從 1 開始以累加方式排序。

如何執行您的應用程式

若要執行您的應用程式,請使用下列步驟,並將佔位元取代 <...> 為您自己的值:

  1. azure-security-keyvault-jca-X.Y.Z.jar 檔案新增至 classpath。 例如,如果您想要與 Tomcat 9 整合,則應該使用 tomcat9w.exe,將 azure-security-keyvault-jca-X.Y.Z.jar 檔案的完整路徑新增至 Java classpath。

  2. 將 新增 -Djava.security.properties==my.java.security 至命令行。

  3. 將 新增-Dazure.keyvault.uri=<your-keyvault-uri>至命令行,以指出要使用的 Azure 金鑰保存庫。 例如: -Dazure.keyvault.uri=https://some.vault.azure.net/

  4. 根據您的案例,新增下列清單中指出的自變數:

    • 如果您使用服務主體進行驗證,請新增下列自變數:

      • -Dazure.keyvault.tenant-id=<your-tenant-id>
      • -Dazure.keyvault.client-id=<your-client-id>
      • -Dazure.keyvault.client-secret=<your-client-secret>
    • 如果您使用系統指派的受控識別進行驗證,則不需要更多自變數。

    • 如果您使用使用者指派的受控識別進行驗證,請新增下列自變數:

      • -Dazure.keyvault.managed-identity=<object-id-of-your-user-managed-identity>

如需這些驗證案例的詳細資訊,請參閱 Microsoft Entra ID 中的應用程式和服務主體物件,以及 Azure 資源的受控識別如何與 Azure 虛擬機搭配運作。

使用服務主體

若要建立 Azure 用戶端識別碼和 Azure 用戶端密碼,請使用下列命令,以 <...> 您自己的值取代佔位元。 請務必儲存傳回的值,例如 appIdpasswordtenant

export CLIENT_NAME=<your-client-name>
az ad sp create-for-rbac --skip-assignment --name ${CLIENT_NAME}
export CLIENT_ID=$(az ad sp list --display-name ${CLIENT_NAME} | jq -r '.[0].appId')
az ad app credential reset --id ${CLIENT_ID}

儲存傳回的值,以便稍後使用它們。

請確定 指定的CLIENT_ID用戶端可以存取目標 金鑰保存庫。 若要授與存取權,請使用下列命令,取代 <your-key-vault-name> 佔位元:

az keyvault set-policy \
    --name <your-key-vault-name> \
    --spn ${CLIENT_ID} \
    --secret-permissions get list \
    --certificate-permissions get list \
    --key-permissions get list

使用受控識別

若要啟用系統指派的受控識別或建立使用者指派的受控識別,請遵循使用 Azure CLI 設定 Azure VM 上 Azure 資源的受控識別中的 指示

取得受控識別的物件標識符之後,請使用下列命令來建立受控識別 金鑰保存庫的存取原則:

az keyvault set-policy \
    --name <your-key-vault-name> \
    --object-id <object-id-of-your-managed-identity> \
    --secret-permissions get list \
    --certificate-permissions get list \
    --key-permissions get list

注意

使用使用者指派的受控識別時,受控識別的物件標識碼也稱為主體標識符。

用戶端/伺服器端 TLS/SSL 範例

如需用戶端/伺服器端 TLS/SSL 的範例,請參閱適用於 JavaAzure 金鑰保存庫 JCA 用戶端連結庫的範例一節。

下一步