代码之家  ›  专栏  ›  技术社区  ›  Saar peer

未使用keytool找到SunPKCS11提供程序

  •  5
  • Saar peer  · 技术社区  · 7 年前

    我正在用java 9运行以下命令:

    keytool -keystore NONE -storetype PKCS11 -providerClass
         sun.security.pkcs11.SunPKCS11 -providerArg pkcs11conf -list
    

    得到流动误差:

    keytool错误:java。lang.例外:提供者 未找到“sun.security.pkcs11.SunPKCS11”

    在Java 8中,它可以工作。

    如何将keytool与SunPKCS11提供程序结合使用?

    1 回复  |  直到 7 年前
        1
  •  6
  •   Community CDub    4 年前

    问题出在我的pkcs11conf文件上。Java不喜欢DLL路径中的单个反斜杠:

    “C:\\Path\\to\my\\pkcs11lib\\mypkcs11lib.dll”:确定

    Java 8和Java 9之间的不同之处在于错误消息。

    keytool error: java.lang.Exception: Provider "sun.security.pkcs11.SunPKCS11" not found
    

    Java 8:

    keytool error: java.lang.reflect.InvocationTargetException
    

    我意识到当我添加 -五、 到命令。

    Java 9:

    java.lang.Exception: Provider "sun.security.pkcs11.SunPKCS11" not found
            at java.base/sun.security.tools.keytool.Main.doCommands(Main.java:798)
            at java.base/sun.security.tools.keytool.Main.run(Main.java:397)
            at java.base/sun.security.tools.keytool.Main.main(Main.java:390)
    Caused by: sun.security.pkcs11.ConfigurationException: Absolute path required for library value: xxx.dll
            at jdk.crypto.cryptoki/sun.security.pkcs11.Config.parseLibrary(Config.java:682)
            at jdk.crypto.cryptoki/sun.security.pkcs11.Config.parse(Config.java:392)
            at jdk.crypto.cryptoki/sun.security.pkcs11.Config.<init>(Config.java:210)
            at jdk.crypto.cryptoki/sun.security.pkcs11.SunPKCS11$1.run(SunPKCS11.java:113)
            at jdk.crypto.cryptoki/sun.security.pkcs11.SunPKCS11$1.run(SunPKCS11.java:110)
            at java.base/java.security.AccessController.doPrivileged(Native Method)
            at jdk.crypto.cryptoki/sun.security.pkcs11.SunPKCS11.configure(SunPKCS11.java:110)
            at java.base/sun.security.tools.KeyStoreUtil.loadProviderByName(KeyStoreUtil.java:285)
            at java.base/sun.security.tools.KeyStoreUtil.loadProviderByClass(KeyStoreUtil.java:309)
            at java.base/sun.security.tools.keytool.Main.doCommands(Main.java:788)
            ... 2 more
    

    Java 8:

    java.lang.reflect.InvocationTargetException
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
            at java.lang.reflect.Constructor.newInstance(Unknown Source)
            at sun.security.tools.keytool.Main.doCommands(Unknown Source)
            at sun.security.tools.keytool.Main.run(Unknown Source)
            at sun.security.tools.keytool.Main.main(Unknown Source)
    Caused by: java.security.ProviderException: Error parsing configuration
            at sun.security.pkcs11.Config.getConfig(Config.java:88)
            at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:129)
            at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:103)
            ... 7 more
    Caused by: sun.security.pkcs11.ConfigurationException: Absolute path required for library value: xxx.dll
            at sun.security.pkcs11.Config.parseLibrary(Config.java:690)
            at sun.security.pkcs11.Config.parse(Config.java:398)
            at sun.security.pkcs11.Config.<init>(Config.java:220)
    
    推荐文章