Цепочка сертификатов не включает все сертификаты, отправленные сервером в 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

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