Хорошо, вот ответ службы поддержки AWS — надеюсь, они добавят его в свои документы.
Определите дескрипторы файлов CloudHSM для закрытого и открытого ключа (вы можете сделать это, сбросив модуль из сертификата и используя инструменты hsm для поиска ключа. Однако я сообщил об дескрипторах до создания CSR и после, чтобы я мог их добавить к моей защищенной документации - так что мне не нужно было этого делать
Создайте KSP-контейнер
C:\Program Files\Amazon\CloudHSM>import_key.exe -из HSM
-privateKeyHandle <дескриптор закрытого ключа> -publicKeyHandle <дескриптор открытого ключа>
Это должно вывести что-то похожее на:
«Представлена 1 пара ключей в Cavium Key Storage Provider».
Если вы получили сообщение об ошибке «n3fips_password не задан», обязательно задайте учетные данные для входа в HSM в вашей системе, как описано в [4] ниже.
- Выполните следующую команду, чтобы убедиться, что новый контейнер ключей находится в вашем поставщике хранилища ключей:
C:\Program Files\Amazon\CloudHSM>certutil -key -csp «Поставщик хранилища ключей Cavium»
«Cavius Key Storage Provider» может не совпадать с именем вашего контейнера ключей. Это имя извлекается из выходных данных, созданных на первом шаге.
Если контейнер был успешно создан, вывод должен быть примерно таким:
Поставщик хранилища ключей Cavium:
<ключевое имя контейнера>
ЮАР
CertUtil: команда -key выполнена успешно.
- Создайте файл repair.txt, чтобы мы могли обновить хранилище сертификатов для использования контейнера.
[Характеристики]
11 = "" ; Добавить свойство понятного имени
2 = "{текст}" ; Добавить свойство информации о поставщике ключей
_continue_="Container=<ключевое имя контейнера>&"
_continue_="Provider=Провайдер хранилища ключей Cavium&"
_continue_="Флаги=0&"
_continue_="KeySpec=2"
- Убедитесь, что демон клиента CloudHSM все еще работает, и используйте
глагол certutil - ремонт
для обновления серийного номера сертификата. Эта команда будет выглядеть примерно так:
certutil -repairstore my <серийный номер сертификата> repair.txt
- После восстановления хранилища сертификатов выполните следующую команду, чтобы убедиться, что сертификат был правильно связан с новым контейнером ключей:
certutil - хранить мои
Вы ожидаете что-то вроде этого
================ Сертификат 0 ================
Серийный номер: <серийный номер сертификата>
Эмитент: CN=MYRootCA
НеДо: 05.02.2020 13:38
Непосле: 05.02.2021 13:48
Тема: CN=www.mydomain.com, OU=Управление сертификатами, O=Информационные технологии, L=Хьюстон, S=Техас, C=США
Некорневой сертификат
Хэш сертификата (sha1): 5a...24
Ключевой контейнер = CNGRSAPriv-...d
Поставщик = поставщик хранилища ключей Cavium
Закрытый ключ НЕ экспортируется
Проверка шифрования пройдена
CertUtil: команда -store выполнена успешно.
Если Ключевой контейнер = CNGRSAPriv-...d
показывает правильный контейнер, тогда вы знаете, что отношение сертификата KSP хорошее
Если ты видишь Закрытый ключ НЕ экспортируется
и Проверка шифрования пройдена
вы знаете, что используете правильные дескрипторы файлов.
Если вы используете signtool, вам нужно будет добавить /см
чтобы заставить его использовать машинное хранилище, а не пользовательское хранилище, поскольку описанный выше процесс создает контейнер, привязанный к машинному хранилищу. Там нет выбора вокруг этого.