在我们的项目中,我们需要与SSL上的第三方服务器进行通信。
之前我们使用过RSA的sslJ提供程序com.rsa.jsse.JsseProvider
,但由于其中的一些问题,现在我们必须使用Sun的SSL提供程序com.sun.net.ssl.internal.ssl.Provider
,我们需要使用RSA的加密提供程序“JsafeJCE”来实现FIPS兼容性
使用JsafeJCE提供程序创建KeyManagerFactory时遇到问题。
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("PKCS12",
"JsafeJCE");
以下是我得到的例外
线程“main”中的异常java.security.NoSuchAlgorithmException:没有这样的算法:PKCS12 for provider JsafeJCE
有人可以告诉我JsafeJCE为KeyManagerFactory支持的算法吗?
答案 0 :(得分:1)
我假设你已经正确安装了RSA JsseProvider和JsafeJCE。
PKCS12
是KeyStore
类型,而不是KeyManager
类型。创建类型为KeyManagerFactory
的{{1}}没有意义,也许您的意思是PKCS12
。
否则,如果你在KeyStore.getInstance("PKCS12", "JsafeJCE")
之后,它是一个JSSE类,而不是一个JCE类,所以它会期望一个JSSE提供者,而不是一个JCE提供者。 provider name for the RSA JsseProvider为“KeyManagerFactory
”,而不是“RsaJsse
”(尽管它将在幕后使用该JCE提供商,请参阅this note)。
有人可以告诉我JsafeJCE为KeyManagerFactory支持的算法吗?
根据documentation支持的KMF名称应为"X509
",但有些别名也有效。