Archiviazione certificati Azure Cloud HSM

Azure cloud HSM supporta l'archiviazione dei certificati tramite PKCS#11, consentendo alle applicazioni di gestire i certificati X.509 insieme alle chiavi. Questa esercitazione fornisce istruzioni dettagliate per configurare i prerequisiti di archiviazione dei certificati, tra cui Archiviazione BLOB di Azure e configurazione dell'identità gestita. Per informazioni dettagliate sull'uso delle API PKCS#11 per gestire i certificati, vedere API PKCS#11 per l'archiviazione dei certificati.

Prerequisites

I prerequisiti seguenti sono necessari per supportare l'archiviazione dei certificati con Azure modulo di protezione hardware cloud. Consultare la guida introduttiva di Azure Cloud HSM per l'installazione e la configurazione dell'SDK se la distribuzione di Azure Cloud HSM non è stata completata.

Requisiti di sistema

  • La risorsa Azure Cloud HSM viene distribuita, inizializzata e configurata.
  • Azure Cloud HSM Client SDK
  • Copia del certificato del proprietario della partizione "PO.crt" nel server applicazioni.
  • Indirizzo noto del modulo HSM hsm1.chsm-<resource-name>-<unique-string>.privatelink.cloudhsm.azure.net.
  • Conoscenza delle credenziali dell'utente di crittografia

Prerequisiti per l'archiviazione dei certificati

  • Account di archiviazione BLOB di Azure
  • Identità gestita per accedere all'archiviazione

Importante

I clienti che usano qualsiasi versione di Windows Server devono installare la versione più recente di Visual C++ Redistributable.

Configurare un account Archiviazione BLOB di Azure

Prima di poter usare l'API PKCS#11 per l'archiviazione dei certificati, è necessario creare un account Archiviazione BLOB di Azure. Questo account di archiviazione contiene gli oggetti certificato PKCS#11, che vengono salvati e recuperati in formato JWS.

  1. Per configurare un account di Archiviazione BLOB di Azure per l'archiviazione dei certificati PKCS#11, passare al portale di Azure e creare un nuovo account di archiviazione.

  2. Dopo aver creato l'account di archiviazione, passarvi nel portale di Azure e selezionare Contenitori in Archiviazione dati. Creare un nuovo contenitore per archiviare i BLOB.

    Screenshot della creazione di un contenitore in Archiviazione BLOB di Azure.

  3. Dopo aver creato il contenitore, individuare l'URL dell'endpoint del contenitore passando a Proprietà contenitore. Questo URL è necessario in un secondo momento.

    Screenshot dell'individuazione delle proprietà del contenitore in Archiviazione BLOB di Azure.

  4. In Proprietà contenitore è presente l'URL del contenitore elencato. Questo URL è necessario più avanti nel file azcloudhsm_application.cfg per consentire alle applicazioni PKCS#11 di individuare il percorso di archiviazione per gli oggetti certificato.

    Screenshot dell'URL del contenitore nelle proprietà di Archiviazione BLOB di Azure.

Configurare un'identità gestita assegnata dall'utente per accedere all'archiviazione

Il prerequisito successivo per l'archiviazione dei certificati consiste nel creare un'identità gestita assegnata dall'utente. A questa identità viene concesso il ruolo necessario per accedere all'account Archiviazione BLOB di Azure e viene usato per eseguire l'autenticazione dalla macchina virtuale amministratore designata.

Annotazioni

L'esempio seguente crea e usa un'identità gestita assegnata dall'utente. È anche possibile creare e usare un'identità gestita assegnata dal sistema nella macchina virtuale.

  1. Per creare un Identity gestita assegnata dall'utente per l'archiviazione dei certificati PKCS#11, passare al portale di Azure e creare una nuova identità.

  2. Dopo aver creato correttamente l'identità gestita, prendere nota dell'ID client, necessario più avanti nel file azcloudhsm_application.cfg per abilitare l'autenticazione all'account di archiviazione dalla macchina virtuale.

    Screenshot dell'ID client di identità gestita sul portale di Azure.

  3. Assegnare il ruolo di Azure appropriato per concedere all'identità gestita l'autorizzazione per leggere e scrivere nell'account gestione rete virtuale di Azure creato in precedenza. Assegnare all'identità gestita il ruolo di Collaboratore ai dati del BLOB di archiviazione, impostando l'ambito su Archiviazione e selezionando la risorsa specifica dell'account di archiviazione.

    Screenshot dell'assegnazione del ruolo Collaboratore ai dati dei BLOB di archiviazione nel portale di Azure.

    Screenshot dell'impostazione dell'ambito per il ruolo Collaboratore dati BLOB di archiviazione.

  4. Assegnare l'identità gestita assegnata dall'utente alla macchina virtuale che esegue l'applicazione di archiviazione certificati PKCS#11. Passare alla risorsa macchina virtuale nel portale di Azure, selezionare la sezione Sicurezza, selezionare Identità e aggiungere l'identità assegnata dall'utente.

    Screenshot dell'aggiunta dell'identità gestita assegnata dall'utente alla macchina virtuale nel portale di Azure.

    Screenshot delle impostazioni di identità della macchina virtuale in Azure portal.

Configurare gli strumenti client Azure Cloud HSM

Creare una chiave di firma di archiviazione

Usare il comando seguente azcloudhsm_util per creare una coppia di chiavi di firma RSA per l'archiviazione certificati PKCS#11 in un unico passaggio. Per impostazione predefinita, genera una chiave RSA a 2048 bit con un esponente pubblico di 65537. È possibile modificare le dimensioni della chiave in base alle esigenze. Prima di eseguire il comando, assicurarsi che azcloudhsm_client sia in esecuzione come servizio in background.

Sostituire i segnaposto come segue:

  • PKCS11_S con il nome utente di crittografia (ad esempio, cu1)
  • PKCS11_P con la password utente per la crittografia (ad esempio, user1234)
  • SIGNING_KEY_ID con l'ID coppia di chiavi desiderato (questo ID viene usato anche più avanti nel azcloudhsm_application.cfg file)

Impostare SIGNING_KEY_ID su un valore casuale per questo esempio:

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%

Importante

Assicurarsi che ogni nodo del modulo di protezione hardware restituisca successo.

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

Aggiornare i file di configurazione

Aggiornare la configurazione dell'applicazione

Sarà necessario aggiornare i parametri seguenti nel file azcloudhsm_application.cfg.

CERTSTORAGE_URL: questo campo fa riferimento all'URL del contenitore all'interno dell'account gestione rete virtuale di Azure del cliente e viene usato per archiviare le informazioni sul certificato. (ad esempio https://chsmstorage.blob.core.windows.net/certificates)

CERTSTORAGE_SIGNING_KEYID: questo campo fa riferimento all'ID assegnato alla coppia di chiavi, che viene usato per eseguire controlli di integrità durante le operazioni di lettura e scrittura nell'archiviazione (firma e verifica).

UAMI_CLIENT_ID: questo campo fa riferimento all'ID client dell'identità gestita assegnata dall'utente, usato per eseguire l'autenticazione all'account gestione rete virtuale di Azure del cliente. Se lasciato vuoto, per impostazione predefinita l'autenticazione usa un'identità gestita assegnata dal sistema.

Annotazioni

Questi parametri si applicano solo quando si eseguono operazioni di certificato in PKCS#11. Non è necessario per le operazioni chiave.

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  

Convalidare la configurazione PKCS#11

Per la convalida basata su esempio della configurazione PKCS#11, vedere la guida all'integrazione di 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

Passaggi successivi