Share via


Uso de Azure Key Vault para entregar certificados TLS/SSL al JVM

En este artículo se describe cómo integrar Azure Key Vault en la JVM para entregar certificados TLS/SSL.

Agregue el proveedor JCA al archivo java.security.

Para registrar el proveedor de JCA, JVM debe conocerlo. Para realizar esta tarea, siga estos pasos:

  1. Realice una copia del archivo java.security dentro de la instalación de JVM y asigne al archivo el nombre my.java.security.

  2. Dentro del archivo, busque la línea security.provider.<maximum-value>. Reemplace el marcador de <maximum-value> posición por el valor máximo en esta posición entre todas las entradas. Por ejemplo: security.provider.13=SunPKCS11.

  3. Incremente el número de esta entrada en 1. Por ejemplo, security.provider.13 debe convertirse en security.provider.14.

  4. Agregue la línea siguiente:

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

Nota:

Asegúrese de que cada security.provider.<X> entrada tiene un valor de número diferente para <X>y manténgalos ordenados incrementalmente a partir de 1.

Ejecución de la aplicación

Para ejecutar la aplicación, siga estos pasos y reemplace los <...> marcadores de posición por sus propios valores:

  1. Agregue el archivo azure-security-keyvault-jca-X.Y.Z.jar a la ruta de clase. Por ejemplo, si desea integrar con Tomcat 9, debe agregar la ruta de acceso completa del archivo azure-security-keyvault-jca-X.Y.Z.jar a la ruta de clases de Java mediante tomcat9w.exe.

  2. Agregue -Djava.security.properties==my.java.security a la línea de comandos.

  3. Agregue -Dazure.keyvault.uri=<your-keyvault-uri> a la línea de comandos para indicar qué azure Key Vault se va a usar. Por ejemplo: -Dazure.keyvault.uri=https://some.vault.azure.net/.

  4. Agregue los argumentos indicados en la lista siguiente, en función de su escenario:

    • Si se autentica mediante una entidad de servicio, agregue los argumentos siguientes:

      • -Dazure.keyvault.tenant-id=<your-tenant-id>
      • -Dazure.keyvault.client-id=<your-client-id>
      • -Dazure.keyvault.client-secret=<your-client-secret>
    • Si se autentica mediante una identidad administrada asignada por el sistema, no se requieren más argumentos.

    • Si se autentica mediante una identidad administrada asignada por el usuario, agregue el siguiente argumento:

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

Para obtener más información sobre estos escenarios de autenticación, consulte Objetos de aplicación y entidad de servicio en Microsoft Entra ID y Cómo funcionan las identidades administradas para recursos de Azure con máquinas virtuales de Azure.

Uso de una entidad de servicio

Para crear un identificador de cliente de Azure y un secreto de cliente de Azure, use el comando siguiente, reemplazando los <...> marcadores de posición por sus propios valores. Asegúrese de almacenar los valores devueltos, como appId, password, tenant.

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}

Almacene los valores devueltos para poder usarlos más adelante.

Asegúrese de que el cliente especificado por CLIENT_ID puede acceder al almacén de claves de destino. Para conceder acceso, use el siguiente comando, reemplazando el <your-key-vault-name> marcador de posición:

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

Uso de una identidad administrada

Para habilitar una identidad administrada asignada por el sistema o crear una identidad administrada asignada por el usuario, siga las instrucciones de Configuración de identidades administradas para recursos de Azure en una máquina virtual de Azure mediante la CLI de Azure.

Después de obtener el identificador de objeto de la identidad administrada, use el siguiente comando para crear la directiva de acceso de Key Vault para la identidad administrada:

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

Nota:

El identificador de objeto de la identidad administrada también se denomina identificador de entidad de seguridad cuando se usa una identidad administrada asignada por el usuario.

Ejemplos de TLS/SSL del lado cliente/servidor

Para obtener ejemplos de TLS/SSL del lado cliente o servidor, consulte la sección Ejemplos de la biblioteca cliente JCA de Azure Key Vault para Java.

Pasos siguientes