SSL HandShakeException: No_Certificate. Использование IBM J9 JVM и Apache Tomcat - PullRequest
1 голос
/ 08 февраля 2010

Я занимаюсь разработкой мобильного приложения, которое будет работать на КПК под управлением Windows Mobile. Приложение написано на Java, и для его запуска мы используем J9M J9 от IBM. Приложение связывается с сервером Apache Tomcat по протоколу HTTP, и мы пытаемся настроить его сейчас на использование SSL.

Я сгенерировал открытые / закрытые ключи для клиента и сервера, экспортировал их самозаверяющие сертификаты и импортировал их в соответствующие хранилища ключей. Сначала я пытался заставить его работать, используя только аутентификацию на стороне сервера, и это было успешно. Но сейчас я пытаюсь получить взаимную аутентификацию, установив clientAuth = "true" в файле server.xml в каталоге apache conf.

Я включил протоколирование SSL на сервере, и когда клиент подключается к серверу, он сообщает об исключении SSLProtocolException: handshake alert: no_certificate. Журналы клиента также показывают исключение:

javax.net.ssl.SSLHandshakeException: unexpected_message
    at com.ibm.j9.jsse.SSLSocketImpl.completeHandshake(Unknown Source)
    at com.ibm.j9.jsse.SSLSocketImpl.startHandshake(Unknown Source)
    at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.openSocket(Unknown Source)
    at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.connect(Unknown Source)
    at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.sendRequest(Unknown Source)
    at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.doRequest(Unknown Source)
    at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.getInputStream(Unknown Source)

Клиентское хранилище ключей и хранилище доверенных сертификатов настраивается путем настройки следующих свойств системы:

javax.net.ssl.trustStore
javax.net.ssl.trustStorePassword
javax.net.ssl.keyStore
javax.net.ssl.keyStorePassword

У кого-нибудь есть идеи, как настроить аутентификацию клиента на JVM J9?

Ответы [ 2 ]

0 голосов
/ 08 апреля 2010

Итак, окончательный ответ, к которому я пришел, - переключиться на другую JVM.Очень мало поддержки со стороны IBM, и просто попытка заставить кого-то продать нам лицензии на свою JVM оказалась очень сложной.Я думаю, что им нравится иметь дело только с огромными организациями.

Теперь использую CEE-J от Skelmir, и пока это намного более перспективно.

0 голосов
/ 08 февраля 2010

Обычно клиент не отправляет сертификат. Сервер не может аутентифицировать клиента: иногда он не получает сертификат или не совпадает с CA_ROOT и т. Д. И не может установить ответ. По сообщению «no_certificate» легко представить, что клиент ничего не отправляет. Проверьте ваши файлы (ваши пути) или ваши теги: вместо «trustStore» следует использовать truststoreFile, а вместо «trustStorePassword» использовать truststorePass

...