我已经使用portecle将JKS密钥库转换为P12格式,但它可能并不顺利。密钥库使用Java 8(各种版本),但使用Java 9(OpenJDK 64位服务器VM(构建9内部+ 0-2016-04-14-195246.buildd.src,混合模式),我'得到
java.io.IOException: Invalid keystore format
at sun.security.provider.JavaKeyStore.engineLoad(java.base@9-internal/JavaKeyStore.java:659)
at sun.security.util.KeyStoreDelegator.engineLoad(java.base@9-internal/KeyStoreDelegator.java:219)
at java.security.KeyStore.load(java.base@9-internal/KeyStore.java:1466)
at org.eclipse.jetty.util.security.CertificateUtils.getKeyStore(CertificateUtils.java:52)
at org.eclipse.jetty.util.ssl.SslContextFactory.loadKeyStore(SslContextFactory.java:998)
at org.eclipse.jetty.util.ssl.SslContextFactory.load(SslContextFactory.java:252)
at org.eclipse.jetty.util.ssl.SslContextFactory.doStart(SslContextFactory.java:219)
有趣的是Java 8 keytool显示
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 5 entries
... entries listed
而Java 9中的那个显示
Keystore type: PKCS12
Keystore provider: SUN
Your keystore contains 5 entries
... entries listed
我了解JEP 229并且我已阅读相关问题,但我无法看到任何相关问题。
答案 0 :(得分:4)
JDK keytool实用程序可以将JKS密钥库转换为PKCS12密钥库。 例如,使用JDK 9,
$ keytool -importkeystore -srckeystore ks.jks -destkeystore ks.p12
此外,自2016年以来已有多项密钥库增强功能,因此您应使用更新版本的JDK 9,请参阅http://jdk.java.net/9/