Używanie usługi Azure Key Vault do dostarczania certyfikatów TLS/SSL do maszyny wirtualnej JVM
W tym artykule opisano sposób integrowania usługi Azure Key Vault z maszyną wirtualną JVM w celu dostarczania certyfikatów TLS/SSL.
Dodaj dostawcę JCA do pliku java.security
Aby zarejestrować dostawcę JCA, JVM musi być o nim poinformowana. Aby wykonać to zadanie, wykonaj następujące czynności:
Utwórz kopię pliku java.security w instalacji JVM i nadaj plikowi nazwę my.java.security.
W pliku wyszukaj wiersz
security.provider.<maximum-value>
. Zastąp symbol<maximum-value>
wartością maksymalną na tej pozycji spośród wszystkich wpisów. Na przykład:security.provider.13=SunPKCS11
.Zwiększa liczbę tego wpisu o 1. Na przykład
security.provider.13
powinna stać sięsecurity.provider.14
.Dodaj następujący wiersz:
security.provider.14=com.azure.security.keyvault.jca.KeyVaultJcaProvider
Notatka
Upewnij się, że każdy wpis security.provider.<X>
ma inny numer dla <X>
, i zachowaj je w kolejności przyrostowej, zaczynając od numeru 1.
Jak uruchomić aplikację
Aby uruchomić aplikację, wykonaj następujące kroki i zastąp symbole zastępcze <...>
własnymi wartościami:
Dodaj plik azure-security-keyvault-jca-X.Y.Z.jar do ścieżki klas. Jeśli na przykład chcesz zintegrować z serwerem Tomcat 9, należy dodać pełną ścieżkę pliku azure-security-keyvault-jca-X.Y.Z.jar do ścieżki klas Języka Java przy użyciu tomcat9w.exe.
Dodaj
-Djava.security.properties==my.java.security
do wiersza polecenia.Dodaj
-Dazure.keyvault.uri=<your-keyvault-uri>
do wiersza polecenia, aby wskazać, który Azure Key Vault użyć. Na przykład:-Dazure.keyvault.uri=https://some.vault.azure.net/
.Dodaj argumenty wskazane na poniższej liście w zależności od scenariusza:
W przypadku uwierzytelniania przy użyciu jednostki usługi dodaj następujące argumenty:
-Dazure.keyvault.tenant-id=<your-tenant-id>
-Dazure.keyvault.client-id=<your-client-id>
-Dazure.keyvault.client-secret=<your-client-secret>
W przypadku uwierzytelniania przy użyciu tożsamości zarządzanej przypisanej przez system nie są wymagane żadne argumenty.
W przypadku uwierzytelniania przy użyciu tożsamości zarządzanej przypisanej przez użytkownika dodaj następujący argument:
-Dazure.keyvault.managed-identity=<object-id-of-your-user-managed-identity>
Aby uzyskać więcej informacji na temat tych scenariuszy uwierzytelniania, zobacz application and service principal objects in Microsoft Entra ID and How managed identities for Azure resources work with Azure virtual machines (Jak tożsamości zarządzane dla zasobów platformy Azure działają z maszynami wirtualnymi platformy Azure).
Użycie głównego elementu usługi
Aby utworzyć identyfikator klienta Azure i wpis tajny klienta Azure, użyj następującego polecenia, zastępując symbole zastępcze <...>
swoimi wartościami. Pamiętaj, aby przechowywać zwrócone wartości, takie jak appId
, password
i 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}
Zapisz zwrócone wartości, aby można było ich użyć później.
Upewnij się, że klient określony przez CLIENT_ID
może uzyskać dostęp do docelowego magazynu kluczy. Aby udzielić dostępu, użyj następującego polecenia, zastępując symbol zastępczy <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
Korzystanie z tożsamości zarządzanej
Aby włączyć tożsamość zarządzaną przypisaną przez system lub utworzyć tożsamość zarządzaną przypisaną przez użytkownika, postępuj zgodnie z instrukcjami w Konfigurowanie tożsamości zarządzanych dla zasobów platformy Azure na maszynie wirtualnej platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure
Po otrzymaniu identyfikatora obiektu tożsamości zarządzanej użyj następującego polecenia, aby utworzyć zasady dostępu usługi Key Vault dla tożsamości zarządzanej:
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
Notatka
Identyfikator obiektu tożsamości zarządzanej jest również nazywany identyfikatorem głównym podczas korzystania z tożsamości zarządzanej przypisanej użytkownikowi.
Przykłady protokołu TLS/SSL po stronie klienta/serwera
Przykłady protokołu TLS/SSL po stronie klienta/serwera można znaleźć w sekcji przykłady biblioteki klienta JCA usługi Azure Key Vault dla języka Java.