【问题标题】:How to import external ssl certificate into java local keystore?如何将外部 ssl 证书导入 java 本地密钥库?
【发布时间】:2019-10-24 13:24:33
【问题描述】:

我需要将 ssl 证书导入 java 本地密钥库(cacerts)才能访问远程 ldaps 服务器。 我已经运行了以下命令:

keytool -keystore C:\Program Files\Java\jdk1.8.0_211\jre\lib\security\cacerts -import -alias myalias -file <PATH_TO_CERTIFICATE>/certificate.cer

证书已成功添加到密钥库:

keytool -list -alias myalias -keystore C:\Program Files\Java\jdk1.8.0_211\jre\lib\security\cacerts
Enter keystore password:
myalias, 24.10.2019, trustedCertEntry

我的应用程序属性:

  ssl:
    key-alias: myalias
    key-store-password: changeit
    key-store: C:\Program Files\Java\jdk1.8.0_211\jre\lib\security\cacerts

当我运行应用程序时,出现以下异常:

Caused by: java.lang.IllegalArgumentException: jsse.alias_no_key_entry
    at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:99)
    at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:71)
    at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:218)
    at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1124)
    at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1210)
    at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:586)
    at org.apache.catalina.connector.Connector.startInternal(Connector.java:1005)
    ... 14 more
Caused by: java.io.IOException: jsse.alias_no_key_entry
    at org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:328)
    at org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:247)
    at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:97)
    ... 20 more

我正在使用 Spring Boot 2.2.0

谁知道是什么问题?

【问题讨论】:

    标签: spring-boot ssl ldap certificate keystore


    【解决方案1】:

    您在 application.properties 中所做的是,您正在保护您的 springboot 应用程序。这与您尝试做的不同(调用 ldaps 服务器)。

    当您将 ldap 服务器证书添加到您的 cacerts 中后,您无需执行任何其他操作。您只需拨打电话即可。

    如果您在调用时遇到 PKIX 异常,那么您需要确保 ldap 服务器证书的 CA 和 SubCA(s) 也是可信的。

    【讨论】:

      【解决方案2】:

      您需要将私钥导入密钥库。

      Step1:你需要下载openSSL,然后移动到C:\OpenSSL-win64\bin接下来,输入这个命令:

      openssl pkcs12 -export -in C:\Keystore\certificate.crt -inkey C:\Keystore\name_key.key -out C:\Keystore\server.p12 -name [name_alias] -CAfile C:\Keystore\rootCA.crt -caname root
      

      注意:如果你在server.xml中使用别名“tomcat”

      keyAlias="tomcat"
      
      keystoreFile="C:\Keystore\server.jks"
      
      keystorePass="your pass"
      
      then [name_alias] = tomcat
      

      第2步:使用cmd移动到C:\program files\java\jdk..\ bin并输入此命令将p12文件转换为jks文件:

      keytool -importkeystore -deststorepass mypass -destkeystore C:\Keystore\server.jks -srckeystore C:\Keystore\server.p12 -srcstoretype PKCS12
      

      重启你的tomcat服务器

      【讨论】:

        猜你喜欢
        • 2013-01-02
        • 1970-01-01
        • 2011-05-18
        • 1970-01-01
        • 2017-02-03
        • 2014-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多