Можно ли создать запрос на подпись сертификата (CSR) с помощью HSM?

Могу ли я сгенерировать CSR с помощью HSM? Если да, пожалуйста, направьте нас. Это было бы очень полезно.

Ниже приведены сведения о нашей системе:

  • У нас есть HSM (SafeNet) Simulator для тестирования приложения разработки.
  • мы используем Cryptoki.dll с настольным приложением для выполнения криптооперация.

Теперь мы хотим знать, может ли HSM генерировать CSR или нет? Если да, то как?

1
задан 9 October 2018 в 08:20
3 ответа

Я проводил исследования и следовал PKCS #11 OASIS document standard:

http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/os/pkcs11-base-v2.40-os. html

Наконец, я могу управлять запросом сертификата (CSR) из HSM.

Далее следуют шаги для достижения того же самого:

  1. Генерация пары ключей (Частный, Публичный)
  2. Получение ключа (C_DeriveKey) из открытого ключа и даем следующие данные Атрибут:
    • Механизм - ENCODE_PKCS_10 (запрос сертификата)
    • Ключ подписи (закрытый ключ)
    • Механизм подписи - SHA1_RSA_PKCS
2
ответ дан 3 December 2019 в 18:26

Вы используете 'dll', поэтому на Windows.

Ваш SafeNet HSM будет поставляться с клиентским программным обеспечением, которое вы устанавливаете на сервере, требующем доступа к устройству. После правильной установки и настройки он отображается как Microsoft CryptoAPI Key Storage Provider.

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

Кроме того, Gemalto (SafeNet) предоставляет программное обеспечение для взаимодействия с HSM непосредственно через PKCS#11 и, следовательно, доступно не-CAPI-приложениям (таким как OpenSSL), а также файлам .jar для доступа из Java-приложений.

.
1
ответ дан 3 December 2019 в 18:26
  1. Создайте пару ключей RSA в HSM с меткой для открытого и закрытого ключей.
  2. Удалите открытый ключ HSM. Преобразование открытого ключа HSM в открытый ключ на основе Java с модулем и открытым показателем (используйте класс RSAPublicKeySpec)
  3. Создайте CertificateRequestInfo с темой и открытым ключом (шаг 2)
  4. Подпишите данные шага 3 закрытым ключом внутри HSM (используйте закрытый ключ label и findObject, чтобы найти закрытый ключ)
  5. Используйте алгоритм, подпись(шаг 4) и CertificationRequestInfo(шаг 3) для вычисления CertificationRequestValue
  6. Закодируйте результат шага 5 в Base64 и добавьте "-----BEGIN NEW CERTIFICATE REQUEST -----" и "-----ЗАВЕРШИТЬ НОВЫЙ ЗАПРОС СЕРТИФИКАТА-----"

Я следовал коду здесь - https://gist.github.com/dopoljak/e7550dd0c01a3438c24c и изменен под мои требования.

Спасибо Домагою Поляку!!

Ура

0
ответ дан 16 July 2020 в 04:37

Теги

Похожие вопросы