1

我们从 Thawte 购买了 Microsoft Authenticode 证书(.cer、pvk 和 spc 文件),并希望重用它们来签署 java jar 文件。请参阅http://www.thawte.com/code-signing/index.html 换句话说,我不想进行第二次(也是不必要的)购买 - 购买也在该页面下方列出的 Java 代码签名证书。注意: Thawte 允许这样做,但不支持。

Thawte_Code_Signing_Intermediate_CA.cer、Thawte_Primary_Intermediate_Root_CA.cer、Thawte_Primary_Root_CA_Cross.cer

我有 pvk 和 spc 文件。

如何将私钥和公钥以及证书导入密钥库?

按照此处的步骤 http://docs.oracle.com/javase/tutorial/security/toolsign/signer.html

keytool -import -trustcacerts -keystore mykeystore -alias primary_root -file Thawte_Primary_Root_CA_Cross.cer
keytool -import -trustcacerts -keystore mykeystore -alias intermediate_root -file Thawte_Primary_Intermediate_Root_CA.cer
keytool -import -trustcacerts -keystore mykeystore -alias myalias -file Thawte_Primary_Intermediate_Root_CA.cer

尝试使用 Netbeans7.3 通过将 jar 指向密钥库并进行构建来对 jar 进行签名会产生:

jarsigner:找不到证书链:primary_root。primary_root 必须引用包含私钥和相应公钥证书链的有效 KeyStore 密钥条目。

我意识到我必须将私钥和公钥以及证书导入密钥库,但不清楚如何。像这样的帖子谈论 .crt 文件,所以看起来不是一回事。https://stackoverflow.com/a/8224863/398348https://stackoverflow.com/a/9131421/398348

无法加载 PKCS7 对象

4

2 回答 2

3

更多详细信息会有所帮助,但是您在此处列出的文件似乎是 CA 证书链证书,例如,没有一个文件名似乎表明它包含代码签名证书。根据您的文件名猜测,您需要将 .spc 和 .pvk 文件导入密钥库。

您必须有权访问 OpenSSL 命令行工具才能执行此操作。使用 Linux/Unix 机器或安装 CygWin 来访问它。

将 spc 文件转换为更健全的格式:

openssl pkcs7 -inform DER -in mycert.spc -print_certs -out mycert.crt

使用 OpenSSL 将密钥对(正确的 .crt 和相应的 .pvk 文件)转换为 PKCS#12 密钥库

openssl pkcs12 -export -in mycert.crt -inkey mycert.pvk \
           -out mycert.p12 -name some-alias

将 PKCS#12 格式文件转换为 Java 密钥库格式

keytool -importkeystore \
    -deststorepass changeit -destkeypass changeit -destkeystore mycert.keystore \
    -srckeystore mycert.p12 -srcstoretype PKCS12 -srcstorepass some-password \
    -alias some-alias

也可以看看:

http://www.drh-consultancy.demon.co.uk/pkcs12faq.html

在 Java 密钥库中导入现有的 x509 证书和私钥以在 ssl 中使用

于 2013-07-13T00:02:57.490 回答
0

很明显,您在尝试签署 jar 时输入了错误的别名“primary_root”。

检查您的别名,使用

keytool.exe -list -keystore YOUR_KEYSTORE -storetype YOUR_STORE_TYPE
于 2013-12-12T14:30:25.493 回答