Как импортировать внешний ssl-сертификат в хранилище ключей Java? - PullRequest
0 голосов
/ 24 октября 2019

Мне нужно импортировать 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

Кто знает в чем проблема?

1 Ответ

0 голосов
/ 24 октября 2019

То, что вы делаете в своем application.properties, это то, что вы защищаете свое приложение springboot. Это отличается от того, что вы пытаетесь сделать (вызвать сервер ldaps).

Когда вы добавляете сертификат сервера ldap в свои пакеты, вам больше ничего не нужно делать. Вы можете просто сделать вызов.

Если при выполнении вызова вы получаете исключение PKIX, вам необходимо убедиться, что CA и SubCA (s) сертификата сервера ldap также являются доверенными.

...