繁体   English   中英

创建PKCS12文件以用作Java信任库

[英]Creating PKCS12 file to use as java trust store

我正在尝试创建仅包含证书(没有私钥)的PKCS12文件。 我使用以下命令:

openssl pkcs12 -export -in ca.crt -out server-ca.pfx -name server-ca -nokeys

我可以成功使用curl的pkcs12文件,它验证我的服务器证书。

如果我尝试将此文件用作java中的信任存储区,则会收到以下错误:

javax.net.ssl.SSLHandshakeException, with message: sun.security.validator.ValidatorException: No trusted certificate found.

我正在使用此文件:

val trustInput = new FileInputStream(".../server-ca.pfx")
val trustKeyStore = KeyStore.getInstance("PKCS12")
trustKeyStore.load(trustInput, "123456".toCharArray())
trustInput.close()

val trustFactory = TrustManagerFactory.getInstance("SunX509")
trustFactory.init(trustKeyStore)

val context = SSLContext.getInstance("TLS")
context.init(null, trustFactory.getTrustManagers, new SecureRandom())

但是,如果我创建一个包含ca.crt文件的JKS密钥库,然后将其转换为pkcs12文件,我的java应用程序将使用相同的代码正确验证服务器证书。

keytool -importkeystore -srckeystore server-ca.jks -destkeystore from-jks.pfx -srcstoretype JKS -deststoretype PKCS12

我需要使用什么openssl命令来创建包含jvm接受为有效信任存储的单个证书的pkcs12文件?

我无法使用sun安全提供程序解决这个问题。 由于我已经使用了充气城堡,我使用BC提供商初始化了信任商店,现在一切正常。

val trustKeyStore = KeyStore.getInstance("PKCS12", "BC")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM