Назад | Перейти на главную страницу

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

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

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

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

Я исследовал и подписался PKCS # 11 Стандарт документов OASIS:

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

Поэтому вы используете «dll» в Windows.

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

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

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

  1. Создайте RSA KeyPair в HSM с меткой для открытого и закрытого ключей.
  2. Извлеките открытый ключ HSM. Преобразование открытого ключа HSM в открытый ключ на основе Java с модулем и открытым показателем (используйте класс RSAPublicKeySpec)
  3. Создайте CertificateRequestInfo с темой и открытым ключом (шаг 2)
  4. Подпишите данные шага 3 с помощью закрытого ключа внутри HSM (используйте метку закрытого ключа и findObject, чтобы найти закрытый ключ)
  5. Используйте алгоритм, подпись (шаг 4) и CertificationRequestInfo (шаг 3) для вычисления CertificationRequestValue.
  6. Закодируйте результат шага 5 в Base64 и добавьте «----- НАЧАТЬ НОВЫЙ ЗАПРОС СЕРТИФИКАТА -----» и «----- КОНЕЦ НОВОГО ЗАПРОСА СЕРТИФИКАТА -----»

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

Спасибо Domagoj Poljak !!

Ура