magazyn certyfikatów modułu HSM w chmurze Azure

Azure Cloud HSM obsługuje magazyn certyfikatów za pośrednictwem PKCS#11, umożliwia aplikacjom zarządzanie certyfikatami X.509 wraz z kluczami. Ten samouczek zawiera instrukcje krok po kroku dotyczące konfigurowania wymagań wstępnych magazynu certyfikatów, w tym Azure Blob Storage i konfiguracji tożsamości zarządzanej. Aby uzyskać szczegółowe informacje na temat używania interfejsów API PKCS#11 do zarządzania certyfikatami, zobacz PKCS#11 API for certificate storage (Interfejs API PKCS#11 dla magazynu certyfikatów).

Prerequisites

Do obsługi magazynu certyfikatów przy użyciu modułu HSM w chmurze Azure wymagane są następujące wymagania wstępne. Zobacz przewodnik dołączania modułu HSM Azure w chmurze, aby uzyskać informacje na temat instalacji i konfiguracji zestawu SDK, jeśli wdrożenie modułu HSM nie zostało ukończone.

Wymagania systemowe

  • Zasób Azure Cloud HSM jest wdrażany, inicjowany i konfigurowany.
  • zestaw SDK klienta modułu HSM w chmurze Azure
  • Kopia certyfikatu właściciela partycji "PO.crt" na serwerze aplikacji.
  • Znany adres twojego modułu HSM hsm1.chsm-<resource-name>-<unique-string>.privatelink.cloudhsm.azure.net.
  • Znajomość poświadczeń użytkownika kryptograficznego

Wymagania wstępne dotyczące magazynu certyfikatów

  • konto usługi Azure Blob Storage
  • Tożsamość zarządzana w celu uzyskania dostępu do magazynu

Ważne

Klienci korzystający z dowolnej wersji Windows Server powinni zainstalować najnowszą wersję pakietu redystrybucyjnego Visual C++.

Konfigurowanie konta Azure Blob Storage

Aby można było użyć interfejsu API PKCS#11 dla magazynu certyfikatów, należy utworzyć konto Azure Blob Storage. To konto magazynowe zawiera obiekty certyfikatów standardu PKCS#11, które są zapisywane i pobierane w formacie JWS.

  1. Aby skonfigurować konto Azure Blob Storage dla magazynu certyfikatów PKCS#11, przejdź do portalu Azure i utwórz nowe konto magazynu.

  2. Po utworzeniu konta magazynu danych przejdź do tego konta w portalu Azure i wybierz pozycję Kontenery w sekcji Magazyn danych. Utwórz nowy kontener do przechowywania obiektów blob.

    Zrzut ekranu przedstawiający tworzenie kontenera w Azure Blob Storage.

  3. Po utworzeniu kontenera znajdź adres URL punktu końcowego kontenera, przechodząc do właściwości kontenera. Ten adres URL jest potrzebny później.

     Zrzut ekranu przedstawiający lokalizowanie właściwości kontenera w Azure Blob Storage.

  4. W obszarze Właściwości kontenera znajduje się wyświetlony adres URL kontenera. Ten adres URL jest wymagany w dalszej części pliku azcloudhsm_application.cfg, aby umożliwić aplikacjom PKCS#11 zlokalizowanie lokalizacji przechowywania obiektów certyfikatów.

    Zrzut ekranu adresu URL kontenera w właściwościach Azure Blob Storage.

Skonfiguruj tożsamość zarządzaną przypisaną przez użytkownika, aby uzyskać dostęp do magazynu

Następnym wymaganiem wstępnym dla magazynu certyfikatów jest utworzenie tożsamości zarządzanej przypisanej przez użytkownika. Ta tożsamość ma przypisaną rolę niezbędną do uzyskania dostępu do konta Azure Blob Storage i jest używana do uwierzytelniania z wyznaczonej maszyny wirtualnej administratora.

Uwaga / Notatka

Poniższy przykład tworzy tożsamość zarządzaną przypisaną przez użytkownika i używa jej. Tożsamość zarządzana przypisana przez system można również utworzyć i użyć na maszynie wirtualnej.

  1. Aby utworzyć przypisaną tożsamość zarządzaną User Assigned Managed Identity dla magazynowania certyfikatów PKCS#11, przejdź do portalu Azure i utwórz nową tożsamość.

  2. Po pomyślnym utworzeniu tożsamości zarządzanej zanotuj identyfikator klienta, który będzie wymagany później w pliku azcloudhsm_application.cfg, aby umożliwić uwierzytelnienie do konta magazynu z maszyny wirtualnej.

    Zrzut ekranu identyfikatora klienta tożsamości zarządzanej w portalu Azure.

  3. Przypisz odpowiednią rolę platformy Azure, aby nadać tożsamości zarządzanej uprawnienia do odczytu i zapisu w wcześniej utworzonym koncie usługi Blob Storage. Przypisz rolę Współautor danych obiektu blob usługi Storage do tożsamości zarządzanej, ustawiając opcję Scope na Storage i wybierając zasób konkretnego konta magazynu.

    Zrzut ekranu przedstawiający przypisywanie roli Współautor danych Blob Storage w portalu Azure.

    Zrzut ekranu przedstawiający ustawianie zakresu roli Współautora danych Storage Blob.

  4. Przypisz tożsamość zarządzaną przypisaną przez użytkownika do maszyny wirtualnej, na której działa aplikacja do przechowywania certyfikatów PKCS#11. Przejdź do zasobu maszyny wirtualnej w portalu Azure, wybierz sekcję Zabezpieczenia, wybierz pozycję Tożsamość i dodaj tożsamość przypisaną przez użytkownika.

     Zrzut ekranu przedstawiający dodawanie tożsamości zarządzanej przypisanej przez użytkownika do maszyny wirtualnej w portalu Azure.

    Zrzut ekranu ustawień tożsamości maszyny wirtualnej w portalu Azure.

Konfigurowanie narzędzi klienckich modułu HSM w chmurze Azure

Utwórz klucz podpisywania magazynu

Użyj następującego azcloudhsm_util polecenia, aby utworzyć parę kluczy podpisywania RSA dla magazynu certyfikatów PKCS#11 w jednym kroku. Domyślnie generuje 2048-bitowy klucz RSA z publicznym wykładnikiem 65537. Rozmiar klucza można zmodyfikować zgodnie z potrzebami. Przed uruchomieniem polecenia upewnij się, że azcloudhsm_client działa jako usługa w tle.

Zastąp symbole zastępcze w następujący sposób:

  • PKCS11_S przy użyciu nazwy użytkownika kryptografii (na przykład cu1)
  • PKCS11_P przy użyciu hasła użytkownika funkcji szyfrowania (na przykład user1234)
  • SIGNING_KEY_ID z żądanym identyfikatorem pary kluczy (ten identyfikator jest również używany później w pliku azcloudhsm_application.cfg)

Dla tego przykładu ustaw SIGNING_KEY_ID wartość losową:

SIGNING_KEY_ID=$(tr -dc 'a-z' </dev/urandom | head -c 10)

Linux:

sudo ./azcloudhsm_util singlecmd loginHSM -u CU -s $PKCS11_S -p $PKCS11_P genRSAKeyPair -m 2048 -e 65537 -l $SIGNING_KEY_ID -id $SIGNING_KEY_ID

Windows:

.\azcloudhsm_util.exe singlecmd loginHSM -u CU -s %PKCS11_S% -p %PKCS11_P% genRSAKeyPair -m 2048 -e 65537 -l %SIGNING_KEY_ID% -id %SIGNING_KEY_ID%

Ważne

Upewnij się, że każdy z węzłów HSM zwraca komunikat o powodzeniu.

chsmVMAdmin@AdminVM:/opt/azurecloudhsm/bin$ sudo ./azcloudhsm_util singlecmd loginHSM -u CU -s cu1 -p user1234 genRSAKeyPair -m 2048 -e 65537 -l signkeyid -id signkeyid
Version info, Client Version: <version>, SDK API Version: <version>, SDK Package Version: <version>

Cfm3Initialize() returned app id : 01000000

    session_handle 1000000

    Current FIPS mode is: 00000000

Cfm3LoginHSM returned: 0x00 : HSM Return: SUCCESS

Cluster Status:
Node id 1 status: 0x00000000 : HSM Return: SUCCESS
Node id 2 status: 0x00000000 : HSM Return: SUCCESS
Node id 3 status: 0x00000000 : HSM Return: SUCCESS
Command: genRSAKeyPair -m 2048 -e 65537 -L signkeyid -id signkeyid

Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS

Cfm3GenerateKeyPair:    public key handle: 262151    private key handle: 262152

Cluster Status:
Node id 1 status: 0x00000000 : HSM Return: SUCCESS
Node id 2 status: 0x00000000 : HSM Return: SUCCESS
Node id 3 status: 0x00000000 : HSM Return: SUCCESS

Aktualizowanie plików konfiguracji

Aktualizowanie konfiguracji aplikacji

Należy zaktualizować następujące parametry w pliku azcloudhsm_application.cfg.

CERTSTORAGE_URL: to pole odwołuje się do adresu URL kontenera w ramach konta Blob Storage klienta i służy do przechowywania informacji o certyfikacie. (np. https://chsmstorage.blob.core.windows.net/certificates)

CERTSTORAGE_SIGNING_KEYID: to pole odwołuje się do identyfikatora przypisanego do pary kluczy, która służy do przeprowadzania kontroli integralności podczas operacji odczytu i zapisu w magazynie (podpisywanie i weryfikacja).

UAMI_CLIENT_ID: to pole odnosi się do identyfikatora klienta przypisanej tożsamości zarządzanej przez użytkownika, używanego do uwierzytelniania się w koncie Blob Storage klienta. W przypadku pozostawienia pustego uwierzytelnianie będzie domyślnie używane przy użyciu tożsamości zarządzanej przypisanej przez system.

Uwaga / Notatka

Te parametry mają zastosowanie tylko w przypadku uruchamiania operacji certyfikatów w PKCS#11. Nie jest to wymagane w przypadku operacji kluczowych.

DAEMON_ID=1  
SOCKET_TYPE=UNIXSOCKET  
PORT=1111  
USER_KEK_HANDLE=262150  
DEFAULT_WRAP_WITH_TRUSTED=1  
CERTSTORAGE_URL=https://chsmstorage.blob.core.windows.net/certificates  
CERTSTORAGE_SIGNING_KEYID=hjgrwvvofe  
UAMI_CLIENT_ID=25e659cc-6570-4f3b-9617-adfbc84b2565  

Weryfikowanie konfiguracji PKCS#11

Aby zapoznać się z przykładową weryfikacją konfiguracji PKCS#11, zobacz przewodnik integracji PKCS#11.

chsmVMAdmin@AdminVM:/opt/azurecloudhsm$ sudo ./cust_p11_app -s cu1 -p user1234 -l /opt/azurecloudhsm/lib64/libazcloudhsm_pkcs11.so
[INFO] Azure Cloud HSM – Loading PKCS#11 library.
[INFO] Azure Cloud HSM – C_GetFunctionList
[INFO] Azure Cloud HSM – Preparing PIN with given username and password.
[INFO] Azure Cloud HSM – C_Initialize
[INFO] Azure Cloud HSM – C_GetInfo
[INFO] Azure Cloud HSM – Retrieve access token, C_GetTokenInfo
[INFO] Azure Cloud HSM – Start session with specified token, C_OpenSession
[INFO] Azure Cloud HSM – Login with PIN, C_Login
Add Your PKCS#11 Code Here

Dalsze kroki