2015-10-05 9 views
1

У меня проблема. Моей организации необходимо выполнить подписание кода для типа файла XPI. Сертификаты и их секретные ключи ДОЛЖНЫ быть защищены аппаратным модулем безопасности. Это по соображениям безопасности.Настройка NSS Signtool для работы с Thales HSM?

Существующий NSS Signtool, предоставляемый Mozilla, мы не смогли найти способ получить этот инструмент, чтобы распознать хранилище ключей Java, CSP в Windows или цепочку ключей на Mac. Все исследованные решения указывают на то, что ключ должен быть скопирован в базу данных программного обеспечения, которую NSS Signtool настроен для использования по умолчанию.

Мне нужно подписать типы файлов XPI, и причина, по которой я пытаюсь найти решение, которое работает с Java, Windows CSP или keychain для Mac, заключается в том, что моя существующая технология HSM от Thales имеет эти 3 варианта в качестве интерфейсов связь с модулем.

Я видел, что есть файл на основе Java, называемый XPISigner, но решение больше не поддерживается, и единственная версия, которую мы нашли для этого, работает с Luna HSM исключительно таким образом, который не соответствует переходу на современные версии Java.

Кому-нибудь удалось получить защищенный ключ HSM для работы с NSS Signtool? Или существует какой-либо механизм интеграции NSS Signtool с хранилищем java? (Идея с опцией java заключается в том, что я смогу манипулировать этим решением для работы с моим HSM)

Спасибо!

ответ

1

Я смог собрать решение, используя nsscapi.dll, скомпилированный из сборки nss-3.13.6. Затем я скопировал дополнительные зависимости библиотек к моей сборке nss-3.20 для использования в моем общем приложении.

nsscapi.dll с целью подписания фрагмента кода является элементарным интерфейсом PKCS11 для Capi для NSS. У него, по-видимому, проблемы с утечкой памяти, но поскольку область моего использования NSS - это просто подписать файл XPI, я нормально с этим перезапускаю этот модуль.

Решение включает в себя: nss-3.20, построенный с использованием mozilla-build, и «make nss_build_all» из подпапки «nss» этого пакета.

Visual Studio C++ Распространяемая версия 2015 x86 (32 бит, поскольку 64 бит не работает для этого проекта).

Thales CAPI интерфейс окна (да у них есть прямой модуль PKCS11, но для моей настроенной среде только АЛО и Java хранилища ключей варианты, так что я не использовал модуль Thales PKCS11)

Эта переменная была изменен, чтобы указать на папки bin и lib в сборке NSS.

nsscapi.dll расположен в NSS-3,20 \ расстояние \ WIN95xxx \ Lib \ папка была загружена в НСС построена с использованием "modutil":

modutil -dbdir "c:\apps\certs" -add "capi" -libfile "C:\Apps\nss-3.20\dist\WIN954.0_DBG.OBJ\lib\nsscapi.dll" -mechanisms RSA:DSA:RC2:RANDOM 

я уже Thales, сконфигурированный для заполнения код подписи сертификатов CAPI, поэтому у меня уже были сертификаты подписи кода в CAPI.

Мне нужно было использовать «сертификаты», в mmc.exe, чтобы просмотреть текущее хранилище сертификатов пользователя. Затем измените «дружественное» имя сертификата подписи кода, который я хочу использовать, чтобы что-то означающее «тест». Это так, что модуль NSSCAPI может однозначно идентифицировать этот сертификат в списке, который имеет видимость.

После этого шага изменения понятного имени на одном из моих подписи сертификатов тестирования коды, я использовал SignTool NSS, чтобы отобразить список доступных сертификатов:

signtool -d "c:\apps\certs" -L 

Я распаковал файл «test.xpi» в подпапку «test» из «c: \ apps \ certs», которая является подпапкой, которую я только что нарисовал, вы можете использовать то, что хотите.

Мой список содержал запись:

  • Microsoft Certificate Store: тест

* означает, что действительный сертификат, который может быть использован для CodeSigning в НСС

тогда я signtool, чтобы подписать код в моем тестовом файле XPI:

signtool -d "C:\Users\mlawson\AppData\Roaming\Mozilla\Firefox\Profiles\4jnnnb1y.default" -k "Microsoft Certificate Store":"test" test/ 

С успехом!

Заранее прошу прощения, если мое форматирование этого ответа отключено. Это мой первый раз, когда вы отправляете сообщения, чтобы переполнять стек, и отвечать на сообщение (даже если оно было моим собственным). Я замалчивал некоторые шаги высокого уровня в этом посте, чтобы держать его кратким, поскольку некоторые из более крупных «способов» делать такие вещи, как создание NSS, уже задокументированы на сайте Mozilla. Конфигурации, связанные с Thales, документированы Thales, не имеющие отношения к объяснению того, как это настроено, поскольку мой вариант использования для их интерфейса CAPI является обычным и проприетарным. Но общая концепция использования nsscapi.dll и этого решения действительно применима ко всему, что связано с MSCAPI, и иметь возможность использовать его с NSS. Nsscapi.dll можно также загрузить в firefox «устройства безопасности» в качестве модуля, чтобы firefox мог использовать CAPI, хотя я не знаю, насколько точно ...