Apache Mina TLS клиент - верблюд

Я использую Apache Mina (Mina2 - Netty недоступен для использования - не спрашивайте, почему:P), чтобы создать TCP-клиент, который подключается к TCP-серверу по TLS.

Вот SSLContext:

Вот мой план xml проекта:

    <route id="ReadMQ">
        <from uri="jmsep://topic:test/014/data" />
        <process ref="readIt"></process>
        <to
            uri="mina2:tcp://SOMEHOST:38332?sync=true;sslContextParameters=#mySSL;minaLogger=true" />

    </route>

cert.pem содержит ключ и сертификат в нем.

Когда Nina пытается подключиться к конечной точке, сервер закрывает соединение с этой ошибкой:

            System.IO.IOException: The handshake failed due to an unexpected      packet format.
                       at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)

Глядя на ошибку, кажется, что Мина не соединяется с правильным протоколом?

Вот что говорит Мина:

            SEVERE: Exception on receiving message from address:     SOMEHOST:38332 using connector: (nio socket connector: managedSessionCount: 0)
            Throwable occurred: java.io.IOException: An existing connection     was forcibly closed by the remote host.

Кроме того, когда я использую s_client следующим образом: openssl s_client -connect SOMEHOST:38332 -cert cert.pem -key cert.pem -state -debug

Это идет голова и делает рукопожатие SSL с обменом сертификатов.

Любые подсказки, что я здесь скучаю?

1 ответ

Ключ в хранилище ключей и сертификат в хранилище доверенных сертификатов не добавлялись, потому что они были в формате PEM. Сервер будет запрашивать сертификат клиента, а цепочка сертификатов клиента будет пустой и, следовательно, возникнет ошибка. Чтобы решить эту проблему, я создал хранилище ключей в формате JKS и импортировал файл p12 (созданный с использованием файлов pem), и он заработал.

Другие вопросы по тегам