Azure Cloud HSM-certifikatlagring

Azure Cloud HSM stöder certifikatlagring via PKCS#11, vilket gör det möjligt för program att hantera X.509-certifikat tillsammans med nycklar. Den här självstudien innehåller stegvisa instruktioner för hur du konfigurerar krav för certifikatlagring, inklusive Azure Blob Storage och konfiguration av hanterade identiteter. Mer information om hur du använder PKCS#11 API:er för att hantera certifikat finns i PKCS#11 API för certifikatlagring.

Prerequisites

Följande krav krävs för att stödja certifikatlagring med Azure Cloud HSM. Se registreringsguiden för Azure Cloud HSM för SDK-installation och konfiguration om HSM-distributionen inte är klar.

Systemkrav

  • Azure Cloud HSM-resurs distribueras, initieras och konfigureras.
  • Azure Cloud HSM-klient-SDK
  • Kopia av partitionsägarcertifikatet "PO.crt" på programservern.
  • Känd adress för din HSM hsm1.chsm-<resource-name>-<unique-string>.privatelink.cloudhsm.azure.net.
  • Kunskap om autentiseringsuppgifter för kryptoanvändare

Krav för certifikatlagring

  • Azure Blob Storage konto
  • Hanterad identitet för åtkomst till lagring

Viktigt!

Kunder som använder valfri version av Windows Server bör installera den senaste versionen av Visual C++ Redistributable.

Konfigurera ett Azure Blob Storage konto

Innan du kan använda PKCS#11 API för certifikatlagring måste du skapa ett Azure Blob Storage konto. Det här lagringskontot innehåller PKCS#11-certifikatobjekten, som sparas och hämtas i JWS-format.

  1. Om du vill konfigurera ett Azure Blob Storage konto för PKCS#11-certifikatlagring går du till Azure-portalen och skapar ett nytt lagringskonto.

  2. När lagringskontot har skapats går du till det i Azure-portalen och väljer Containrar under Datalagring. Skapa en ny container för att lagra blobarna.

    Skärmbild av att skapa en container i Azure Blob Storage.

  3. När du har skapat containern letar du reda på url:en för containerslutpunkten genom att gå till Containeregenskaper. Den här URL:en behövs senare.

    Screenshot för att hitta containeregenskaper i Azure Blob Storage.

  4. I Containeregenskaper hittar du container-URL:en i listan. Den här URL:en krävs senare i filen azcloudhsm_application.cfg för att aktivera PKCS#11-program för att hitta lagringsplatsen för certifikatobjekt.

    Skärmbild av container-URL:en i Azure Blob Storage properties.

Konfigurera en användartilldelad hanterad identitet för åtkomst till lagring

Nästa förutsättning för certifikatlagring är att skapa en användartilldelad hanterad identitet. Den här identiteten beviljas den roll som krävs för att få åtkomst till Azure Blob Storage-kontot och används för att autentisera från den avsedda virtuella administratörsdatorn.

Anmärkning

I följande exempel skapas och används en användartilldelad hanterad identitet. En systemtilldelad hanterad identitet kan också skapas och användas på den virtuella datorn.

  1. Om du vill skapa en Användartilldelad hanterad identitet för PKCS#11-certifikatlagring går du till Azure-portalen och skapar en ny identitet.

  2. När du har skapat den hanterade identiteten bör du anteckna klient-ID:t, som krävs senare i filen azcloudhsm_application.cfg för att aktivera autentisering till lagringskontot från den virtuella datorn.

    Skärmbild av klient-ID för hanterad identitet i Azure portal.

  3. Tilldela lämplig Azure roll för att ge den hanterade identiteten behörighet att läsa och skriva till det tidigare skapade Blob Storage kontot. Tilldela rollen Storage Blob Data Contributor till den hanterade identiteten, ange omfånget till Lagring och välj den specifika lagringskontoresursen.

    Skärmbild av tilldelning av rollen Storage Blob Data Contributor i Azure portal.

    Skärmbild av inställningens omfång för rollen Storage Blob Data Contributor.

  4. Tilldela den användartilldelade hanterade identiteten till den virtuella dator som kör ditt PKCS#11-certifikatlagringsprogram. Gå till den virtuella datorresursen i Azure-portalen, välj avsnittet Säkerhet, välj Identitet och lägg till den användartilldelade identiteten.

    Skärmbild av att lägga till användartilldelad hanterad identitet i den virtuella datorn i Azure portal.

    Skärmbild av identitetsinställningar för virtuella datorer i Azure portal.

Konfigurera Azure Cloud HSM-klientverktyg

Skapa en lagringssigneringsnyckel

Använd följande azcloudhsm_util kommando för att skapa ett RSA-signeringsnyckelpar för PKCS#11-certifikatlagring i ett enda steg. Som standard genererar den en 2048-bitars RSA-nyckel med en offentlig exponent på 65537. Du kan ändra nyckelstorleken efter behov. Innan du kör kommandot kontrollerar du att azcloudhsm_client det körs som en tjänst i bakgrunden.

Ersätt platshållarna på följande sätt:

  • PKCS11_S med ditt användarnamn för kryptografianvändare (till exempel cu1)
  • PKCS11_P med lösenordet för kryptografianvändaren (till exempel user1234)
  • SIGNING_KEY_ID med önskat nyckelpar-ID (detta ID används också senare i azcloudhsm_application.cfg filen)

Ange SIGNING_KEY_ID ett slumpmässigt värde för det här exemplet:

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%

Viktigt!

Se till att var och en av HSM-noderna returnerar lyckade resultat.

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

Uppdatera konfigurationsfiler

Uppdatera programkonfiguration

Du måste uppdatera följande parametrar i filen azcloudhsm_application.cfg.

CERTSTORAGE_URL: Det här fältet refererar till URL:en för containern i kundens Blob Storage-konto och används för att lagra certifikatinformation. (t.ex. https://chsmstorage.blob.core.windows.net/certificates)

CERTSTORAGE_SIGNING_KEYID: Det här fältet refererar till det ID som tilldelats nyckelparet, som används för att utföra integritetskontroller under läs- och skrivåtgärder till lagring (signering och verifiering).

UAMI_CLIENT_ID: Det här fältet refererar till klient-ID:t för den användartilldelade hanterade identiteten, som används för att autentisera mot kundens Blob Storage konto. Om det lämnas tomt används en systemtilldelad hanterad identitet som standard för autentisering.

Anmärkning

Dessa parametrar gäller endast när du kör certifikatåtgärder i PKCS#11. Det krävs inte för nyckelåtgärder.

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  

Verifiera PKCS#11-konfiguration

Exempelbaserad validering av PKCS#11-konfigurationen finns i integrationsguiden för 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

Nästa steg