Я генерирую ключ сертификации с помощью openssl. Вот моя команда:
openssl genrsa -des3 -out enc_key.pem 1024
Я экспортирую в файл cer, затем с помощью java keytool импортирую в java keystore (jks).
Кейстора звучит хорошо. Я могу загрузить хранилище ключей из своего приложения java.
Проблема заключается в том, когда клиент подключается к серверу (в данном случае это FTP-сервер, а не веб-сервер, и я использую apache mina), произошло исключение:
javax.net.ssl.SSLHandshakeException: SSL-квитирование не выполнено. at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:433) at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(по умолчаниюIoFilterChain.java:434) at org.apache.mina.core.filterchain.DefaultIoFilterChain.access $5 (DefaultIoFilterChain.java:429)
...
Причиняется: javax.net.ssl.SSLHandshakeException: нет общих комплектов шифров at com.sun.net.ssl.internal.ssl.Handshaker.checkThrown(Неизвестный источник) at com.sun.net.ssl.internal.ssl.SSLEngineImpl.checkTaskThrown(Неизвестный источник) at com.sun.net.ssl.internal.ssl.SSLEngineImpl.writeAppRecord(Неизвестный источник) at com.sun.net.ssl.internal.ssl.SSLEngineImpl.wrap(Неизвестный источник) в javax.net.ssl.SSLEngine.wrap(Неизвестный источник)
...
Причиняется: javax.net.ssl.SSLHandshakeException: нет общих комплектов шифров at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Неизвестный источник) at com.sun.net.ssl.internal.ssl.SSLEngineImpl.fatal(Неизвестный источник)
Есть несколько вещей, которые я хочу задать:
- Что такое шифр сертификации, который я генерирую с помощью openssl? Как мы можем знать? возможно, в командной строке openssl xxx?
- Я перехожу в http://java.sun.com/j2se/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA. И я включил SSL_RSA_xxx в список разрешенных шифров, но по-прежнему не могу работать (я ставлю SSL_RSA, потому что SSL использует ssl implisit и genrsa, просто мое мнение genrsa генерирует RSA). Правильно ли это?
- Кто-нибудь знает решение?
- Или кто-нибудь знает, как сгенерировать стандартное хранилище ключей из командной строки openssl, пока оно не будет использовано в java-приложении (вне курса с помощью шифрования). Потому что прямо сейчас я могу сгенерировать сертификацию из openssl и экспортировать java-хранилище, но я не знаю, что такое шифр, который я использовал, и как я использую приложение java. Примечание. Я могу запустить, если хранилище ключей создается непосредственно из java. В настоящее время проблема заключается в том, что хранилище ключей, созданное java keytool от сертификации, похоже на openssl (и другое, возможно).
Любая помощь будет оценена! Благодаря