密钥库别名空错误

时间:2012-01-12 07:08:14

标签: ssl certificate ssl-certificate jks

我正在尝试配置名为Hermes的产品进行数字签名。

我有一个文件MyCert.pfx,我在其配置中指定如下:

<component id="keystore-manager-for-signature" name="Key Store Manager for Digital Signature">
    <class>hk.hku.cecid.piazza.commons.security.KeyStoreManager</class>
    <parameter name="keystore-location" value="/opt/mycompany/certs/MyCert.pfx"/>
    <parameter name="keystore-password" value="12345678"/>
    <!-- parameter name="key-alias" value="joeblank"/-->
    <!-- parameter name="key-password" value="12345678"/-->
    <parameter name="keystore-type" value="PKCS12"/>
    <parameter name="keystore-provider" value="org.bouncycastle.jce.provider.BouncyCastleProvider"/>
</component>

爱马仕抛出这样的例外:

hk.hku.cecid.ebms.spa.task.MessageValidationException: Cannot sign the ebxml message
    by hk.hku.cecid.ebms.pkg.SignatureException: [10204] Cannot sign message Exception: java.lang.NullPointerException Message: null
    Try to retreive key alias[null] from keystore[/opt/mycompany/certs/MyCert.pfx]
    by java.lang.NullPointerException

我没有pfx文件的别名。当我在Tomcat的server.xml中使用它时,我不需要指定一个。

还建议我使用这样的命令将证书导入jsk商店:

keytool -importkeystore -deststorepass [password] -destkeystore [JKS keystore file] -deststoretype JKS -destalias [alias] -srckeystore [p12 keystore file] -srcstoretype PKCS12 -srcstorepass [password] -srcalias [alias]

我必须删除-srcalias部分,因为我没有这个,这也要求我删除-destalias。所以在这种情况下,我没有在mycompany.jks中引用的已知别名

无论哪种方式,我都没有别名。我尝试使用keytool -import导入pfx文件,但是抛出“输入不是X.509证书”。

你们有什么建议我接下来应该尝试一下?

1 个答案:

答案 0 :(得分:2)

当没有指定时,听起来您的应用程序不使用默认alias。应用程序/库(包括Apache Tomcat)在没有指定任何别名时选择它们找到的第一个别名是很常见的。但是,你的似乎需要一个。

您可以使用keytool -list -storetype PKCS12 -keystore找到它(如果需要,也可以使用-v更清楚地查看别名)。别名应该是指向2, Jan 12, 2012, PrivateKeyEntry(此处为“2”)之类的行的第一部分,就在指纹之前。

keystore -import确实只是用于证书。

keytool -importkeystore可用于将PKCS#12商店转换为JKS商店,但您不需要它,因为您可以指定PKCS12类型。