Я пытаюсь отладить следующую ошибку:
javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name
at sun.security.ssl.ClientHandshaker.handshakeAlert
at sun.security.ssl.SSLSocketImpl.recvAlert
(...)
Я уже возглавлял описанную здесь проблему расширения SNI: Предупреждение рукопожатия SSL: ошибка unrecognized_name с момента обновления до Java 1.7.0
Я все еще получаю сообщение об ошибке, поэтому я хочу напечатать SSL-сертификаты, которые я отправляю на сервер для отладки.Вот мой код:
URL url = new URL(text);
HttpsURLConnection conn = (HttpsURLConnection)
url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-length", String.valueOf(query.length()));
DataOutputStream os = new DataOutputStream(conn.getOutputStream());
os.writeBytes(query);
Certificate[] certs = conn.getLocalCertificates();
for (int i = 0; i < certs.length; i++) {
System.out.println("########### LocalCertNr " + String.valueOf(i) + " ##############");
System.out.println(certs[i].toString());
}
У меня проблемы с тем, что до нажатия os.writeBytes(query)
соединение еще не открыто, и я не могу прочитать сертификаты, но не могу открыть его, потому что после нажатия OutputStream
или InputStream
обнаруживает ошибку с начала сообщения.
Как распечатать сертификаты, которые HTTPSURLConnection
отправит?