ssl - keystore 别名空错误

标签 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>

Hermes 抛出这样的异常:

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 证书”。

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

最佳答案

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

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

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

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

关于ssl - keystore 别名空错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8831332/

相关文章:

android - 使用来自letsencrypt的证书与 flutter

ssl - Kafka ssl Producer EOFException 而 Producer.send 来自 Cloud Foundry

jakarta-ee - weblogic 中的 2 路 ssl 到现有的 weblogic 实例 9.2 + 回归测试

iphone - 将证书链存储在应用程序钥匙串(keychain)中

java - 如何从 JSSE 中的 SSL 握手中获取协商信息

authentication - 请求已中止 : Could not create SSL/TLS secure channel.(RestSharp、SSL 客户端证书)

PHP - SSL 套接字客户端证书

java - java http 客户端如何验证服务器的 CA 证书?

java - ftps 服务器错误 GnuTLS 错误 -89 : Public key signature verification has failed

java - 对两个 Eclipse 项目使用相同的 keystore ,但在同一系统上进行调试时它们无法通信