在我们的项目中,我们需要与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");


以下是我得到的例外


  线程“主”中的异常java.security.NoSuchAlgorithmException:无此类算法:提供程序JsafeJCE的PKCS12


有人可以告诉我JsafeJCE支持的KeyManagerFactory算法吗?

最佳答案

我假设您已经正确安装了RSA JsseProvider和JsafeJCE。

PKCS12KeyStore类型,而不是KeyManager类型。创建类型为KeyManagerFactoryPKCS12没有意义,也许您是说KeyStore.getInstance("PKCS12", "JsafeJCE")

否则,如果您使用的是KeyManagerFactory,则它是JSSE类,而不是JCE类,因此它将期望使用JSSE提供程序,而不是JCE提供程序。 provider name for the RSA JsseProvider是“ RsaJsse”,而不是“ JsafeJCE”(尽管它将在后台使用该JCE提供程序,请参见this note)。


  有人可以告诉我JsafeJCE支持的KeyManagerFactory算法吗?


根据documentation,支持的KMF名称应为"X509",尽管某些别名也有效。

08-05 21:09