Использование Azure Key Vault для доставки TLS/SSL-сертификатов в JVM
В этой статье описывается, как интегрировать Azure Key Vault в JVM для доставки TLS/SSL-сертификатов.
Добавление поставщика JCA в файл java.security
Чтобы зарегистрировать поставщика JCA, JVM должен знать об этом. Чтобы выполнить эту задачу, выполните следующие действия.
Создайте копию файла java.security в установке JVM и присвойте файлу my.java.security.
В файле найдите строку
security.provider.<maximum-value>
. Замените<maximum-value>
заполнитель максимальным значением в этой позиции среди всех записей. Например:security.provider.13=SunPKCS11
.Увеличьте число этой записи на 1. Например,
security.provider.13
должен статьsecurity.provider.14
.Добавьте в него следующую строку.
security.provider.14=com.azure.security.keyvault.jca.KeyVaultJcaProvider
Примечание.
Убедитесь, что каждая security.provider.<X>
запись имеет другое значение числа для <X>
, и сохраните их постепенно упорядоченным начиная с 1.
Запуск приложения
Чтобы запустить приложение, выполните следующие действия и замените <...>
заполнители собственными значениями:
Добавьте в классpath файл azure-security-keyvault-jca-X.Y.Z.jar. Например, если вы хотите интегрировать с Tomcat 9, необходимо добавить полный путь к файлу azure-security-keyvault-jca-X.Y.Z.jar в классpath Java с помощью tomcat9w.exe.
Добавьте
-Djava.security.properties==my.java.security
в командную строку.Добавьте
-Dazure.keyvault.uri=<your-keyvault-uri>
в командную строку, чтобы указать, какой azure Key Vault следует использовать. Например:-Dazure.keyvault.uri=https://some.vault.azure.net/
.Добавьте аргументы, указанные в следующем списке, в зависимости от сценария:
При проверке подлинности с помощью субъекта-службы добавьте следующие аргументы:
-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, используйте следующую команду, заменив <...>
заполнители собственными значениями. Не забудьте сохранить возвращаемые значения, например 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}
Сохраните возвращаемые значения, чтобы использовать их позже.
Убедитесь, что клиент, указанный с помощью 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 на виртуальной машине Azure с помощью Azure CLI.
После получения идентификатора объекта управляемого удостоверения используйте следующую команду, чтобы создать политику доступа к Key Vault для управляемого удостоверения:
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 на стороне клиента и сервера см. в разделе "Примеры" клиентской библиотеки JCA Azure Key Vault для Java.