2011-01-31 4 views
4

У меня есть рабочая демонстрация с апплетом, подключающимся к серверу («А») через https. Цепочка сертификатов сервера загружается апплетом через доверенное хранилище JKS (myTrustManagerFactory.init (mytrustStore.jks)). Он работает нормально.Доверие с сертификатами для нескольких хостов

Теперь мне нужен этот апплет для подключения к другому серверу («B») через https. Сертификат сервера подписывается самоподписанным ЦС. Поэтому мне нужно передать этот самозанятый CA в апплет TrustManagerFactory.

  • Можно ли разместить его в том же доверенности JKS, что и для сервера «А»? Если да, мне нужно сохранить этот самозаверяющий СА с помощью второго псевдонима? Я пробовал это, но получаю ошибки при подключении к серверу «B». Есть ли способ указать псевдоним сервера «B» для TrustManagerFactory?

  • Должен ли я использовать второй JKS или какой-либо SSL-контекст «перезагрузить» до вызова второго сервера?

Спасибо за вашу помощь,
Родольф

+0

Какая ошибка возникает при подключении к серверу «B», если самозаверяющий сертификат B находится в том же доверенном магазине JKS? – Raghuram

+0

Я получаю эту ошибку: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: Ошибка цепочки сертификатов \t at com.sun.net.ssl.internal.ssl.Alerts.getSSLException (Alerts.java: 174) \t at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal (SSLSocketImpl.java:1623) \t at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE (Handshaker.java: 198) \t at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE (Handshaker.java:192) \t at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate (ClientHandshaker.java: 1074) – Rodolphe

ответ

1

просто нашел решение сам:
Сообщение об ошибке «Сертификат цепочки ошибку» не отражает проблему цепи в доверенное хранилище, а скорее проблема цепи на сервере.

Таким образом, в случае, если это может помочь, можно загрузить несколько сертификатов Truststore, чтобы доверять нескольким серверам в https. Просто нужен один псевдоним на сервер (имя псевдонима не имеет значения) и сертификаты (цепочки), необходимые для доверия этому серверу.

Не нужно ничего перезагружать при переключении связи на другой сервер. Просто загрузите все цепи сертификатов серверов в один метод myTrustManagerFactory.init (mytrustStore.jks).

Смежные вопросы