Цепочка сертификатов не включает все сертификаты, отправленные сервером в checkServerTrusted.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Цепочка сертификатов не включает все сертификаты, отправленные сервером в checkServerTrusted.

Сообщение Anonymous »

Я написал службу Java, которая принимает имя хоста/порт (независимо от протокола) и отправляет в ответ всю информацию о цепочке сертификатов, включая допустимые имена центров сертификации, предоставленные сервером. После того как приложение подключается и извлекает данные SSL-сертификата, оно немедленно отключается от хоста. Я написал собственный TrustManager и KeyManager для извлечения этих деталей.
Сокет SSL инициализируется следующим образом:
< pre class="lang-java Prettyprint-override">

Код: Выделить всё

SSLContext sslContext = SSLContext.getInstance("TLS");

sslContext.init(new KeyManager[] { customKeyManager }, new TrustManager[] { customTrustManager }, null);
socket = (SSLSocket) sslContext.getSocketFactory().createSocket();
socket.connect(new InetSocketAddress(host, port, timeout);
socket.getSession().getPeerCertificates();
В большинстве случаев он работает безупречно и способен извлечь все необходимые детали... но я заметил, что с некоторыми хостами (в данном случае с HTTPS-соединениями) это не удается. чтобы получить всю цепочку сертификатов и псевдонимы клиентов. Я проверил CLI openssl и включил отладку SSL-квитирования (

Код: Выделить всё

-Djavax.net.debug=ssl:handshake
), и смог подтвердить, что сервер отправил всю цепочку сертификатов.
Когда вызывается checkServerTrusted(...), я только видя один сертификат. Должны быть две дополнительные подписывающие стороны (промежуточная и корневая подписывающая сторона), но они отсутствуют в цепочке.
Кроме того, в моем KeyManager параметр ChooseClientAlias(...) никогда не вызывается, поэтому я не могу видеть псевдонимы клиентов.
Я пропустил реализацию KeyManager и TrustManager, но могу обновить этот пост, если необходимо.

Подробнее здесь: https://stackoverflow.com/questions/786 ... checkserve
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»