Firefox 配置NSS Signtool以与泰雷兹HSM配合使用?

Firefox 配置NSS Signtool以与泰雷兹HSM配合使用?,firefox,mozilla,firefox-developer-tools,signtool,xpi,Firefox,Mozilla,Firefox Developer Tools,Signtool,Xpi,我有个问题。我的组织需要对XPI文件类型执行代码签名。证书及其私钥必须受到硬件安全模块的保护。这是出于安全考虑 Mozilla提供的现有NSS Signtool我们无法找到获得该工具的方法,无法识别Java密钥库、Windows中的CSP或Mac中的密钥链。所有研究的解决方案都要求将密钥复制到NSS Signtool默认配置使用的软件数据库中 我需要对XPI文件类型进行签名,我之所以试图找到一个与Java、windows CSP或Mac keychain兼容的解决方案,是因为我现有的泰利斯HSM

我有个问题。我的组织需要对XPI文件类型执行代码签名。证书及其私钥必须受到硬件安全模块的保护。这是出于安全考虑

Mozilla提供的现有NSS Signtool我们无法找到获得该工具的方法,无法识别Java密钥库、Windows中的CSP或Mac中的密钥链。所有研究的解决方案都要求将密钥复制到NSS Signtool默认配置使用的软件数据库中

我需要对XPI文件类型进行签名,我之所以试图找到一个与Java、windows CSP或Mac keychain兼容的解决方案,是因为我现有的泰利斯HSM技术将这3个选项作为与模块通信的接口

我看到有一个名为XPISigner的基于Java的文件,但该解决方案不再受支持,我们找到的唯一一个版本专门用于Luna HSM,其方式与当今的Java版本不兼容

是否有人设法获得HSM保护的密钥以使用NSS Signtool?或者是否有任何机制将NSS Signtool与java密钥库集成?(java选项的想法是,我可以操纵所述解决方案来使用我的HSM)


谢谢

我能够使用从nss-3.13.6版本编译的nsscapi.dll拼凑出一个解决方案。然后,我将附加的库依赖项复制到我的nss-3.20构建中,以便在我的整个应用程序中使用

nsscapi.dll用于签署一段代码,是NSS的基本PKCS11到Capi模块接口。它显然存在内存泄漏问题,但由于我使用NSS的范围只是偶尔对XPI文件进行签名,因此我可以偶尔重新启动该模块

解决办法包括: nss-3.20使用mozilla build构建,并在此包的“nss”子文件夹中使用“make nss_build_all”

VisualStudioC++可重新分发2015 x86版本(32位为64位,不适合此项目)。 Thales CAPI与windows的接口(是的,他们有一个直接的PKCS11模块,但对于我的定制环境,只有CAPI和Java密钥库是选项,所以我没有使用Thales PKCS11模块)

PATH环境变量已修改为指向NSS生成中的bin和lib文件夹

nss-3.20\dist\WIN95xxx\lib\文件夹中的nsscapi.dll已使用“modutil”加载到nss生成中:

我已经将泰雷兹配置为向CAPI填充代码签名证书,因此我已经在CAPI中拥有代码签名证书

我必须使用mmc.exe中的“证书”管理单元来查看当前用户的“个人”证书存储。然后将我要使用的代码签名证书的“友好”名称修改为有意义的名称,如“test”。这样,NSSCAPI模块就可以在列表中唯一地标识对其可见的证书

在更改一个测试代码签名证书的友好名称后,我使用NSS signtool显示可用证书的列表:

signtool -d "c:\apps\certs" -L
我将一个“test.xpi”文件解压缩到“c:\apps\certs”的“test”子文件夹中,这是我刚编好的子文件夹名,你可以使用你想要的

我的名单上有一个条目:

  • Microsoft证书存储:测试
*表示它是可用于NSS中代码签名的有效证书

然后,我使用signtool对测试XPI文件中的代码进行签名:

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

如果我对这个答案的格式设置不正确,我提前道歉。这是我第一次向stack overflow发帖和回复帖子(即使是我自己的帖子)。我在这篇文章中略过了一些高层次的步骤以保持简短,因为一些更大的“如何”做的事情,如构建NSS,已经在Mozilla的网站上有了记录。泰雷兹相关配置由泰雷兹记录,与解释如何配置无关,因为其CAPI接口的用例是定制和专有的。但是使用nsscapi.dll和此解决方案的总体概念实际上适用于任何与MSCAPI相关的内容,并且能够将其与NSS结合使用非常方便。nsscapi.dll也可以作为一个模块加载到firefox的“安全设备”中,这样firefox也可以使用CAPI,尽管我不知道到底有多好

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