2016-08-21 8 views
0

У меня есть приложение с Джерси, которое использует клиент Джерси для запроса сервера. Сервер использует клиентский сертификат и базовый auth для связи. У меня есть настройки доверенных сертификатов и хранилища ключей правильно с сертификатами в GlassFishJava Джерси не отправляет сертификат клиента ssl

сертификат сервера цепи: Сервер CERT -> CA Inter -> CA

сертификат клиента цепи: клиент CERT -> CA Inter -> CA

CA - это сам созданный/подписанный сертификат, а не поставщик.

доверенных:

1) CA

2) CA Inter

хранилище ключей:

1) сертификат клиента с полной цепи

код: (магазины устанавливаются в среде)

sSLContext = SslConfigurator.newInstance().securityProtocol("TLSv1.2").createSSLContext(); 
HttpAuthenticationFeature authFeature = HttpAuthenticationFeature.basic("user", "pass"); 
client = ClientBuilder.newBuilder().sslContext(sSLContext).build(); 
client.register(authFeature); 

Все сертификаты и цепи загружаются должным образом.

Однако, когда я сделать запрос я получить

Info: Warning: no suitable certificate found - continuing without client authentication 

, а затем я получаю ошибку handshake_failure

я получаю эти другие ошибки

Info: http-listener-1(3), setSoTimeout(0) called 
Info: Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1 
Info: Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 for TLSv1 
Info: Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256 for TLSv1 
Info: Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1 
Info: Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 for TLSv1 
Info: Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 for TLSv1 
Info: Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 for TLSv1 
Info: Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1.1 
Info: Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 for TLSv1.1 
Info: Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256 for TLSv1.1 
Info: Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1.1 
Info: Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 for TLSv1.1 
Info: Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 for TLSv1.1 
Info: Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 for TLSv1.1 

Я установил неограниченное расширение Chiper и проверяется, что работает. Все еще получаю их.

Я также проверил сертификат в браузере, и я могу подключиться к серверу через браузер и получать данные с использованием тех же сертификатов.

Как получить 2-way ssl для работы?

ответ

0

И клиент, и ранг нуждаются в сертификате CA в своих соответствующих магазинах доверия. Я бы сказал, что сервер этого не делает.

Когда сервер запрашивает сертификат клиента, он посылает свой список доверенных центров сертификации, и если клиент не может найти сертификат, подписанный одной из них не отправляет один,

+0

У меня есть два хранилище ключей cacerts .jks и keystore.jks, какова будет клиентская доверенность? У меня есть CA и CA inter и в цепочке серверов и клиентов, и они совпадают. У меня есть ca-certs.pem как цепочка сертификатов, установленная на сервере apache. Это содержит CA cert. И я подтвердил, что тип запроса на сертификат сервера соответствует одному присутствующему в клиенте – Akshit