Udostępnij za pośrednictwem


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:

  1. Utwórz kopię pliku java.security w instalacji JVM i nadaj plikowi nazwę my.java.security.

  2. 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.

  3. Zwiększa liczbę tego wpisu o 1. Na przykład security.provider.13 powinna stać się security.provider.14.

  4. 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:

  1. 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.

  2. Dodaj -Djava.security.properties==my.java.security do wiersza polecenia.

  3. 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/.

  4. 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, passwordi 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.

Następne kroki