密钥库不适用于Java 9

时间:2017-07-11 17:41:33

标签: java keystore keytool java-9

我已经使用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并且我已阅读相关问题,但我无法看到任何相关问题。

1 个答案:

答案 0 :(得分:4)

JDK keytool实用程序可以将JKS密钥库转换为PKCS12密钥库。 例如,使用JDK 9,

$ keytool -importkeystore -srckeystore ks.jks -destkeystore ks.p12

此外,自2016年以来已有多项密钥库增强功能,因此您应使用更新版本的JDK 9,请参阅http://jdk.java.net/9/