Сокет 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();
Код: Выделить всё
-Djavax.net.debug=ssl:handshakeКогда вызывается checkServerTrusted(...), я только видя один сертификат. Должны быть две дополнительные подписывающие стороны (промежуточная и корневая подписывающая сторона), но они отсутствуют в цепочке.
Кроме того, в моем KeyManager параметр ChooseClientAlias(...) никогда не вызывается, поэтому я не могу видеть псевдонимы клиентов.
Я пропустил реализацию KeyManager и TrustManager, но могу обновить этот пост, если необходимо.
Подробнее здесь: https://stackoverflow.com/questions/786 ... checkserve
Мобильная версия