Azure хранилище сертификатов Cloud HSM

Azure Cloud HSM поддерживает хранилище сертификатов через PKCS#11, что позволяет приложениям управлять сертификатами X.509 вместе с ключами. В этом руководстве приведены пошаговые инструкции по настройке необходимых компонентов хранилища сертификатов, включая Хранилище BLOB-объектов Azure и конфигурацию управляемого удостоверения. Дополнительные сведения об использовании API PKCS#11 для управления сертификатами см. в API PKCS#11 для хранилища сертификатов.

Prerequisites

Следующие предварительные требования необходимы для поддержки хранилища сертификатов с Azure Cloud HSM. См. руководство по начальной настройке Azure Cloud HSM для установки и настройки SDK, если развертывание HSM не завершено.

Системные требования

  • Ресурс Azure Cloud HSM развернут, инициализирован и сконфигурирован.
  • клиентский SDK для облачного модуля HSM Azure
  • Копия сертификата владельца секции po.crt на сервере приложений.
  • Известный адрес вашего HSM hsm1.chsm-<resource-name>-<unique-string>.privatelink.cloudhsm.azure.net.
  • Знание учетных данных пользователя crypto

Предварительные требования к хранилищу сертификатов

  • учетная запись Хранилище BLOB-объектов Azure
  • Управляемое удостоверение для доступа к хранилищу

Это важно

Клиенты, использующие любую версию Windows Server, должны установить последнюю версию распространяемого компонента Visual C++.

Настройка учетной записи Хранилище BLOB-объектов Azure

Прежде чем использовать API PKCS#11 для хранения сертификатов, необходимо создать учетную запись Хранилище BLOB-объектов Azure. Эта учетная запись хранения содержит объекты сертификатов PKCS#11, которые сохраняются и извлекаются в формате JWS.

  1. Чтобы настроить учетную запись Хранилище BLOB-объектов Azure для хранилища сертификатов PKCS#11, перейдите на портал Azure и создайте новую учетную запись хранения.

  2. После создания учетной записи хранения перейдите к ней на портале Azure и выберите контейнеры в хранилище данных. Создайте новый контейнер для хранения BLOB-объектов.

    Screenshot создания контейнера в Хранилище BLOB-объектов Azure.

  3. После создания контейнера найдите URL-адрес конечной точки контейнера, перейдя к свойствам контейнера. Этот URL-адрес необходим позже.

    Скриншот определения свойств контейнера в Хранилище BLOB-объектов Azure.

  4. В свойствах контейнера вы найдете указанный URL-адрес контейнера. Этот URL-адрес требуется позже в файле azcloudhsm_application.cfg, чтобы разрешить приложениям PKCS#11 найти расположение хранилища для объектов сертификатов.

    Скриншот URL контейнера в свойствах Хранилище BLOB-объектов Azure.

Настройте управляемое удостоверение, назначенное пользователем, для доступа к хранилищу

Следующим предварительным условием для хранилища сертификатов является создание управляемого удостоверения, назначаемого пользователем. Это удостоверение предоставляет необходимую роль для доступа к учетной записи хранилища Azure Blob и используется для аутентификации с вашей указанной виртуальной машины администратора.

Замечание

В следующем примере создается и используется управляемое удостоверение, назначаемое пользователем. Управляемое удостоверение, назначаемое системой, также можно создать и использовать на виртуальной машине.

  1. Чтобы создать управляемое удостоверение User Assigned Identity для хранилища сертификатов PKCS#11, перейдите на портал Azure и создайте новое удостоверение.

  2. После успешного создания управляемого удостоверения запишите идентификатор клиента, который потребуется позже в файле azcloudhsm_application.cfg для аутентификации в учетной записи хранения с виртуальной машины.

    Скриншот идентификатора клиента управляемого удостоверения на портале Azure.

  3. Назначьте соответствующую роль Azure, чтобы предоставить управляемому удостоверению разрешение на чтение и запись в созданную ранее учетную запись Хранилище BLOB-объектов. Назначьте управляемой идентичности роль участника данных BLOB-объектов хранилища, установив для параметра Scope значение Storage и выбрав конкретный ресурс учетной записи хранения.

    Снимок экрана назначения роли

    Снимок экрана: настройка области для роли участника данных хранилища BLOB-объектов.

  4. Назначьте виртуальной машине, на которой выполняется приложение хранилища сертификатов PKCS#11, управляемое удостоверение, назначаемое пользователем. Перейдите к ресурсу виртуальной машины на портале Azure, выберите раздел "Безопасность", выберите "Удостоверение" и добавьте удостоверение, назначаемое пользователем.

    Скриншот добавления пользовательски назначенного управляемого удостоверения для виртуальной машины на портале Azure.

    Скриншот параметров удостоверений виртуальной машины в портале Azure.

Настройка клиентских средств Azure Cloud HSM

Создание ключа подписывания хранилища

Используйте следующую azcloudhsm_util команду, чтобы создать пару ключей подписывания RSA для хранилища сертификатов PKCS#11 на одном шаге. По умолчанию он создает 2048-разрядный ключ RSA с открытым экспонентом 65537. При необходимости можно изменить размер ключа. Перед выполнением команды убедитесь, что azcloudhsm_client запущен как служба в фоновом режиме.

Замените заполнители следующим образом:

  • PKCS11_S с именем пользователя шифрования (например, cu1)
  • PKCS11_P с паролем пользователя для шифрования (например, user1234)
  • SIGNING_KEY_ID с идентификатором требуемой пары ключей (этот идентификатор также используется позже в файле azcloudhsm_application.cfg )

Задайте SIGNING_KEY_ID для этого примера случайное значение:

SIGNING_KEY_ID=$(tr -dc 'a-z' </dev/urandom | head -c 10)

Линукс:

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%

Это важно

Убедитесь, что каждый из узлов HSM возвращает успех.

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

Обновление файлов конфигурации

Обновление конфигурации приложения

Вам потребуется обновить следующие параметры в файле azcloudhsm_application.cfg.

CERTSTORAGE_URL. Это поле ссылается на URL-адрес контейнера в Хранилище BLOB-объектов учетной записи клиента и используется для хранения сведений о сертификате. (например, https://chsmstorage.blob.core.windows.net/certificates)

CERTSTORAGE_SIGNING_KEYID. Это поле ссылается на идентификатор, назначенный паре ключей, которая используется для проверки целостности во время операций чтения и записи в хранилище (подписывание и проверка).

UAMI_CLIENT_ID. Это поле ссылается на идентификатор клиента управляемого удостоверения, назначаемого пользователем, который используется для проверки подлинности в Хранилище BLOB-объектов учетной записи клиента. Если оставить пустым, аутентификация по умолчанию будет использовать управляемое удостоверение, назначенное системой.

Замечание

Эти параметры применяются только при выполнении операций с сертификатами в PKCS#11. Это не требуется для ключевых операций.

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  

Проверка конфигурации PKCS#11

Пример проверки конфигурации PKCS#11 см. в руководстве по интеграции 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

Дальнейшие шаги