Partager via


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 Azure Blob Storage et de l’identité managée. Pour plus d’informations sur l’utilisation des API PKCS#11 pour gérer les certificats, reportez-vous à l’API PKCS#11 pour le stockage de certificats.

Prérequis

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 du HSM Cloud Azure pour l’installation et la configuration du SDK si le déploiement du 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 Azure Blob Storage
  • 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.

Configuration d’un compte Azure Blob Storage

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

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

  2. Après avoir créé le compte de stockage, accédez-y dans le portail Azure, puis sélectionnez Containers sous StockageData. Ici, vous créez un nouveau conteneur pour stocker les blobs.

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

  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 Azure Blob Storage.

  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 Azure Blob Storage properties.

Configuration de l’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 Azure Blob Storage 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. L’étape suivante consiste à attribuer le rôle de Azure approprié pour accorder à l’identité managée l’autorisation de lire et d’écrire dans le compte Blob Storage créé précédemment. Attribuez le rôle Contributeur aux données blob de stockage à l’identité managée, en définissant l’Étendue sur Stockage et en sélectionnant la ressource de 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. L’étape suivante consiste à affecter l’identité managée affectée par l’utilisateur à la machine virtuelle qui exécutera votre application de stockage de certificat PKCS#11. Accédez à votre ressource de machine virtuelle dans le portail Azure, accédez à la section Security, sélectionnez Identity 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

La commande azcloudhsm_util suivante peut être utilisée 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é si nécessaire. Avant d’exécuter la commande, vérifiez que le azcloudhsm_client s’exécute en tant que service en arrière-plan.

Remplacez les espaces réservés comme suit :

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

ID de clé de signature Pour cet exemple, nous allons définir l’ID de clé de signature sur une valeur aléatoire.

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: 2.09.07.02, SDK API Version: 2.09.07.02, SDK Package Version: 2.0.1.2

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 Blob Storage 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 Blob Storage 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://chmsstorage.blob.core.windows.net/certificates  
CERTSTORAGE_SIGNING_KEYID=hjgrwvvofe  
UAMI_CLIENT_ID=25e659cc-6570-4f3b-9617-adfbc84b2565  

Valider la configuration PKCS#11

Reportez-vous au Guide d’intégration PKCS#11 pour obtenir une validation basée sur des exemples de configuration 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