我们正在尝试安装由政府颁发的新证书,该证书将失败。
代码在Java EE服务器上运行,该服务器读取证书并提取公钥。
//ks is Keystore
ks.load(new FileInputStream("/tmp/cert.pfx"), "password".toCharArray());
证书加载正常。如果我们查看ks.size()
,它将返回1。
如果我们枚举别名,我们也可以看到别名值。
Enumeration<?> en = ks.aliases();
String alias = (String)en.nextElement();
但是,如果我们使用别名提取证书,则会返回空值
X509Certificate x509cert = ((X509Certificate)ks.getCertificate(alias));
x509cert
此时为空。
更多点:
这是政府颁发的证书。如果我们使用openssl将别名更改为明文值,则可以正常工作。原始值为GUID。
如果我们使用Java SE在本地PC上使用测试程序进行测试,则原始 证书有效-我们可以使用别名从证书中提取公钥。
过去的证书运行良好。我们更改为新证书只是因为旧证书已过期。
新证书仅在Java EE环境中失败。因此,我将其视为证书中某些内容及其运行环境的组合。
任何想法可能有什么问题或解决方法吗?