База ключей Java может импортировать пару ключей, сгенерированную OpenSSL?

Я генерирую ключ сертификации с openssl. Вот моя команда:

openssl genrsa-des3 - enc_key.pem 1024

Я экспортирую в cer файл, затем с Java keytool я импортирую в Java keystore (jks).

keystore звучит хорошим. Я могу загрузить keystore из своего приложения Java.

Проблема состоит в том, когда клиентское подключение к серверу (В этом случае FTP-сервер, не веб-сервер, и я использую апачский mina), исключение произошло:

javax.net.ssl. SSLHandshakeException: квитирование SSL перестало работать. в org.apache.mina.filter.ssl. SslFilter.messageReceived(SslFilter.java:433) в org.apache.mina.core.filterchain. DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434) в org.apache.mina.core.filterchain. 5 DefaultIoFilterChain.access$ (DefaultIoFilterChain.java:429)

...

Вызванный: javax.net.ssl. SSLHandshakeException: никакие наборы шифров вместе в com.sun.net.ssl.internal.ssl. Handshaker.checkThrown (Неизвестный Источник) в com.sun.net.ssl.internal.ssl. SSLEngineImpl.checkTaskThrown (Неизвестный Источник) в com.sun.net.ssl.internal.ssl. SSLEngineImpl.writeAppRecord (Неизвестный Источник) в com.sun.net.ssl.internal.ssl. SSLEngineImpl.wrap (Неизвестный Источник) в javax.net.ssl. SSLEngine.wrap (Неизвестный Источник)

...

Вызванный: javax.net.ssl. SSLHandshakeException: никакие наборы шифров вместе в com.sun.net.ssl.internal.ssl. Alerts.getSSLException (Неизвестный Источник) в com.sun.net.ssl.internal.ssl. SSLEngineImpl.fatal (Неизвестный Источник)

Существует несколько вещей, которые я хочу спросить:

  1. Каков шифр сертификации, которую я генерирую с openssl? Как мы можем знать? возможно, командной строкой openssl xxx?
  2. Я перехожу к http://java.sun.com/j2se/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA. И я поместил SSL_RSA_xxx во включенные наборы шифров, но все еще не могу работать (я поместил SSL_RSA, потому что это, который SSL использует ssl неявный, и genrsa, просто мое мнение genrsa, генерируют RSA). Это корректно?
  3. Кто-либо знает решение?
  4. Или, кто-либо знает, как генерировать стандарт keystore из openssl командной строки, пока не может использоваться в приложении Java (от курса с шифром). Поскольку прямо сейчас я могу генерировать сертификацию от openssl и экспортировать keystore Java, но я не знаю то, что является шифром, который я использовал и как я использую в приложении Java.Примечание: Я могу работать, если keystore, генерируют непосредственно ОТ Java. Прямо сейчас проблема состоит в том если keystore, сгенерированный Java keytool из сертификации как openssl (и другой, возможно).

Любая справка будет цениться!Спасибо

21
задан erickson 4 May 2010 в 19:02
поделиться

1 ответ

Почему вы используете OpenSSL для создания пары ключей? Почему бы просто не использовать keytool ?

Инструмент genrsa просто генерирует закрытый ключ. Как вы создаете соответствующий сертификат? Как вы импортируете закрытый ключ в свое хранилище ключей Java? (Я спрашиваю, потому что keytool может импортировать закрытый ключ только из существующего хранилища ключей и только из Java 6.)

Я подозреваю, что ваша проблема в том, что ваше хранилище ключей не содержит запись ключа (закрытый ключ и соответствующий сертификат ). Когда вы перечисляете содержимое хранилища ключей с помощью keytool , сколько там записей? Это ключевые записи или доверенные записи?


Серверу необходим доступ к закрытому ключу для аутентификации. Чтобы импортировать закрытый ключ, используйте Java 6 расширенный keytool .

После создания ключа и сертификата с помощью OpenSSL используйте OpenSSL для создания хранилища ключей PKCS # 12:

openssl pkcs12 -export -in cert.pem -inkey key.pem > server.p12

Затем преобразуйте это хранилище в хранилище ключей Java:

keytool -importkeystore -srckeystore server.p12 -destkeystore server.jks -srcstoretype pkcs12

Теперь используйте server.jks на вашем сервере с поддержкой SSL, который содержит сертификат и закрытый ключ.

48
ответ дан 29 November 2019 в 20:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: