Azure Cloud HSM stockage de certificats

Azure Cloud HSM prend en charge le stockage de certificats via PKCS#11, ce qui permet aux applications de gérer des certificats X.509 en même temps que des clés. Ce tutoriel fournit des instructions pas à pas pour configurer les prérequis de stockage de certificats, notamment la configuration des Stockage Blob Azure et des identités managées. Pour plus d’informations sur l’utilisation des API PKCS#11 pour gérer les certificats, consultez l’API PKCS#11 pour le stockage de certificats.

Prerequisites

Les conditions préalables suivantes sont requises pour prendre en charge le stockage de certificats avec Azure HSM cloud. Consultez le guide d'intégration Azure Cloud HSM pour l'installation et la configuration du Kit de développement logiciel (SDK) si le déploiement HSM n'est pas terminé.

Configuration système requise

  • Azure ressource HSM cloud est déployée, initialisée et configurée.
  • Kit de développement logiciel (SDK) client Azure Cloud HSM
  • Copie du certificat de propriétaire de partition « PO.crt » sur le serveur d’applications.
  • Adresse connue de votre HSM hsm1.chsm-<resource-name>-<unique-string>.privatelink.cloudhsm.azure.net.
  • Connaissance des informations d’identification de l’utilisateur crypto

Conditions préalables pour le stockage de certificats

  • compte Stockage Blob Azure
  • Identité managée pour accéder au stockage

Important

Les clients qui utilisent n’importe quelle version de Windows Server doivent installer la version la plus récente de Visual C++ Redistributable.

Configurer un compte Stockage Blob Azure

Avant de pouvoir utiliser l’API PKCS#11 pour le stockage de certificats, vous devez créer un compte Stockage Blob Azure. Ce compte de stockage contient les objets de certificat PKCS#11, qui sont enregistrés et récupérés au format JWS.

  1. Pour configurer un compte Stockage Blob Azure pour le stockage de certificats PKCS#11, accédez au portail Azure et créez un compte de stockage.

  2. Une fois le compte de stockage créé, accédez-y dans le portail Azure et sélectionnez Conteneurs sous Stockage de données. Créez un nouveau conteneur pour stocker les blobs.

    Screenshot de création d’un conteneur dans Stockage Blob Azure.

  3. Après avoir créé le conteneur, recherchez l’URL du point de terminaison de conteneur en accédant aux propriétés du conteneur. Cette URL est nécessaire ultérieurement.

    Screenshot de localisation des propriétés de conteneur dans Stockage Blob Azure.

  4. Dans les propriétés de conteneur, vous trouverez l’URL du conteneur répertoriée. Cette URL est requise ultérieurement dans le fichier azcloudhsm_application.cfg pour permettre aux applications PKCS#11 de localiser l’emplacement de stockage des objets de certificat.

    Screenshot de l’URL du conteneur dans Stockage Blob Azure properties.

Configurer une identité managée affectée par l’utilisateur pour accéder au stockage

La configuration requise suivante pour le stockage de certificats consiste à créer une identité managée affectée par l’utilisateur. Cette identité est accordée au rôle nécessaire pour accéder au compte Stockage Blob Azure et est utilisée pour s’authentifier à partir de votre machine virtuelle d’administration désignée.

Remarque

L’exemple suivant crée et utilise une identité managée affectée par l’utilisateur. Une identité managée affectée par le système peut également être créée et utilisée sur la machine virtuelle.

  1. Pour créer une identité gérée attribuée par l'utilisateur pour le stockage de certificats PKCS#11, accédez au portail Azure et créez une nouvelle identité.

  2. Après avoir créé l’identité managée, notez l’ID client, qui est requis ultérieurement dans le fichier azcloudhsm_application.cfg pour activer l’authentification auprès du compte de stockage à partir de votre machine virtuelle.

    Capture d'écran de l'ID Client de l'identité managée dans le portail Azure.

  3. Attribuez le rôle de Azure approprié pour accorder l’autorisation d’identité managée de lire et d’écrire dans le compte Stockage Blob créé précédemment. Attribuez le rôle Contributeur aux données Blob du stockage à l’identité managée, en définissant le Étendue sur Stockage et en sélectionnant la ressource correspondant au compte de stockage spécifique.

    Capture d'écran de l’attribution du rôle Contributeur aux données blob de stockage dans le portail Azure.

    Capture d’écran de la configuration de l’étendue du rôle Contributeur aux données blob de stockage.

  4. Affectez l’identité managée affectée par l’utilisateur à la machine virtuelle qui exécute votre application de stockage de certificat PKCS#11. Accédez à votre ressource de machine virtuelle dans le portail Azure, sélectionnez la section Sécurité, sélectionnez Identité et ajoutez l’identité affectée par l’utilisateur.

    Capture d’écran de l’ajout d’une identité managée assignée par l’utilisateur à la machine virtuelle dans le portail Azure.

    Screenshot des paramètres d’identité de machine virtuelle dans Azure portal.

Configurer les outils clients Azure Cloud HSM

Créer une clé de signature de stockage

Utilisez la commande suivante azcloudhsm_util pour créer une paire de clés de signature RSA pour le stockage de certificats PKCS#11 en une seule étape. Par défaut, il génère une clé RSA 2048 bits avec un exposant public de 65537. Vous pouvez modifier la taille de clé en fonction des besoins. Avant d’exécuter la commande, vérifiez qu’elle s’exécute en tant que azcloudhsm_client service en arrière-plan.

Remplacez les espaces réservés comme suit :

  • PKCS11_S avec votre nom d’utilisateur de chiffrement (par exemple, cu1)
  • PKCS11_P avec votre mot de passe utilisateur de chiffrement (par exemple, user1234)
  • SIGNING_KEY_ID avec l’ID de paire de clés souhaité (cet ID est également utilisé ultérieurement dans votre azcloudhsm_application.cfg fichier)

Définissez sur SIGNING_KEY_ID une valeur aléatoire pour cet exemple :

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%

Important

Assurez-vous que chacun des nœuds HSM retourne un succès.

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

Mettre à jour les fichiers de configuration

Mettre à jour la configuration de l’application

Vous devez mettre à jour les paramètres suivants dans le fichier azcloudhsm_application.cfg.

CERTSTORAGE_URL : ce champ fait référence à l'URL du conteneur dans le compte Stockage Blob du client et sert à stocker les informations de certificat. (p. ex. https://chsmstorage.blob.core.windows.net/certificates)

CERTSTORAGE_SIGNING_KEYID : ce champ fait référence à l’ID affecté à la paire de clés, qui est utilisé pour effectuer des vérifications d’intégrité pendant les opérations de lecture et d’écriture dans le stockage (signature et vérification).

UAMI_CLIENT_ID : ce champ fait référence à l'ID client de l'identité managée affectée par l'utilisateur, qui est utilisé pour s'authentifier auprès du compte Stockage Blob du client. Si elle est vide, l’authentification utilise par défaut une identité managée affectée par le système.

Remarque

Ces paramètres s’appliquent uniquement lors de l’exécution d’opérations de certificat dans PKCS#11. Il n’est pas nécessaire pour les opérations clés.

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  

Valider la configuration PKCS#11

Pour obtenir une validation basée sur des exemples de configuration PKCS#11, consultez le guide d’intégration 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

Étapes suivantes