almacenamiento de certificados HSM en Azure Cloud

Azure Cloud HSM admite el almacenamiento de certificados a través de PKCS#11, lo que permite a las aplicaciones administrar certificados X.509 junto con claves. En este tutorial se proporcionan instrucciones paso a paso para configurar los requisitos previos de almacenamiento de certificados, incluida la configuración de Azure Blob Storage e Identidad administrada. Para más información sobre el uso de las API de PKCS#11 para administrar certificados, consulte la API PKCS#11 para Almacenamiento de certificados.

Prerrequisito

Los siguientes requisitos previos son necesarios para admitir el almacenamiento de certificados con Azure Cloud HSM. Referencia La guía de incorporación de HSM en la nube de Azure para la instalación y configuración del SDK si la implementación de HSM no está completa.

Requisitos del sistema

  • El recurso de HSM de Azure en la nube se implementa, inicializa y configura.
  • SDK de cliente HSM en la nube de Azure
  • Copia del certificado de propietario de partición "PO.crt" en el servidor de aplicaciones.
  • Dirección conocida del HSM hsm1.chsm-<resource-name>-<unique-string>.privatelink.cloudhsm.azure.net.
  • Conocimientos de credenciales de usuario criptográfico

Requisitos previos de almacenamiento de certificados

  • cuenta de Azure Blob Storage
  • Identidad administrada para acceder al almacenamiento

Importante

Los clientes que usan cualquier versión de Windows Server deben instalar la versión más reciente de Visual C++ Redistributable.

Configuración de una cuenta de Azure Blob Storage

Para poder usar la API PKCS#11 para El almacenamiento de certificados, debe crear una cuenta de Azure Blob Storage. Esta cuenta de almacenamiento contendrá los objetos de certificado PKCS#11, que se guardan y recuperan en formato JWS.

  1. Para configurar una cuenta de Azure Blob Storage para el almacenamiento de certificados PKCS#11, vaya al portal de Azure y cree un nuevo Cuenta de almacenamiento.

  2. Después de crear correctamente la cuenta de almacenamiento, vaya a ella en el portal de Azure y seleccione Containers en Data storage. Aquí, creas un nuevo contenedor para almacenar los bloques.

     Captura de pantalla de la creación de un contenedor en Azure Blob Storage.

  3. Después de crear el contenedor, busque la dirección URL del punto de conexión del contenedor; para ello, vaya a Propiedades del contenedor. Esta dirección URL es necesaria más adelante.

    Captura de pantalla de localizar propiedades del contenedor en Azure Blob Storage.

  4. En Propiedades del contenedor, encontrará la dirección URL del contenedor en la lista. Esta dirección URL es necesaria más adelante en el archivo azcloudhsm_application.cfg para permitir que las aplicaciones PKCS#11 busquen la ubicación de almacenamiento de los objetos de certificado.

    Captura de pantalla de la URL del contenedor en las propiedades de Azure Blob Storage.

Configuración de la identidad administrada asignada por el usuario para acceder al almacenamiento

El siguiente requisito previo para el almacenamiento de certificados es crear una identidad administrada asignada por el usuario. A esta identidad se le concede el rol necesario para acceder a la cuenta de Azure Blob Storage y se usa para autenticarse desde la máquina virtual de administración designada.

Nota:

En el ejemplo siguiente se crea y se usa una identidad administrada asignada por el usuario. También se puede crear y usar una identidad administrada asignada por el sistema en la máquina virtual.

  1. Para crear un Identidad administrada asignada por el usuario para el almacenamiento de certificados PKCS#11, vaya al portal de Azure y cree una nueva identidad.

  2. Después de crear correctamente la identidad administrada, anote el identificador de cliente, que se requiere más adelante en el archivo azcloudhsm_application.cfg para habilitar la autenticación en la cuenta de almacenamiento desde la máquina virtual.

    Captura de pantalla del identificador de cliente de identidad administrada en Azure portal.

  3. El siguiente paso consiste en asignar el rol de Azure adecuado para conceder permiso de identidad administrada para leer y escribir en la cuenta de Blob Storage creada anteriormente. Asigne el rol Colaborador de datos de Storage Blob a la identidad administrada, estableciendo el ámbito en Storage y seleccionando el recurso de cuenta de almacenamiento específico.

    Captura de pantalla de la asignación del rol Colaborador de datos de Storage Blob en Azure portal.

    Captura de pantalla del ámbito de configuración del rol Colaborador de datos de Storage Blob.

  4. El siguiente paso es asignar la identidad administrada asignada por el usuario a la máquina virtual que ejecutará la aplicación de almacenamiento de certificados PKCS#11. Vaya al recurso de máquina virtual en el portal de Azure, vaya a la sección Security, seleccione Identity y agregue la identidad asignada por el usuario.

    Screenshot de agregar identidad administrada asignada por el usuario a la máquina virtual en Azure portal.

    Captura de pantalla de la configuración de Identidad de VM en el portal de Azure.

Configuración de las herramientas de cliente de HSM en la nube de Azure

Creación de una clave de firma de almacenamiento

El siguiente comando azcloudhsm_util se puede usar para crear un par de claves de firma RSA para el almacenamiento de certificados PKCS#11 en un solo paso. De forma predeterminada, genera una clave RSA de 2048 bits con un exponente público de 65537. Puede modificar el tamaño de la clave según sea necesario. Antes de ejecutar el comando, asegúrese de que el azcloudhsm_client se ejecuta como servicio en segundo plano.

Reemplace los marcadores de posición de la siguiente forma:

  • PKCS11_S con el nombre de usuario Crypto. (por ejemplo, cu1)
  • PKCS11_P con la contraseña de usuario criptográfico. (por ejemplo, user1234)
  • SIGNING_KEY_ID con el identificador de par de claves deseado (este identificador también se usará más adelante en el archivo azcloudhsm_application.cfg).

Identificador de clave de firma En este ejemplo, vamos a establecer el identificador de clave de firma en un valor aleatorio.

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

Asegúrese de que cada uno de los nodos HSM devuelvan éxito.

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

Actualizar archivos de configuración

Actualización de la configuración de la aplicación

Deberá actualizar los parámetros siguientes en el archivo azcloudhsm_application.cfg.

CERTSTORAGE_URL: este campo hace referencia a la dirección URL del contenedor dentro de la cuenta de Blob Storage del cliente y se usa para almacenar información del certificado. (por ejemplo, https://chsmstorage.blob.core.windows.net/certificates)

CERTSTORAGE_SIGNING_KEYID: este campo hace referencia al identificador asignado al par de claves, que se usa para realizar comprobaciones de integridad durante las operaciones de lectura y escritura en el almacenamiento (firma y comprobación).

UAMI_CLIENT_ID: este campo hace referencia al identificador de cliente de la identidad administrada asignada por el usuario, que se usa para autenticarse en la cuenta de Blob Storage del cliente. Si se deja en blanco, la autenticación usará de forma predeterminada una identidad administrada asignada por el sistema.

Nota:

Estos parámetros solo se aplican al ejecutar operaciones de certificado en PKCS#11. No es necesario para las operaciones clave.

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  

Validación de la configuración de PKCS#11

Consulte la Guía de integración de PKCS#11 para la validación basada en muestras de la configuración de 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

Pasos siguientes