Я полагаю, что вы можете установить протокол TLS на вашем HttpsURLConnection напрямую, и таким образом он будет применяться только локально к этому одному соединению.
Сначала инициализируйте ваш TLSv1.2 SSLContext
SSLContext sc = SSLContext.getInstance("TLSv1.2");
// Init the SSLContext with a TrustManager[] and SecureRandom()
sc.init(null, trustCerts, new java.security.SecureRandom());
Документация о параметрах init ():
"Любой из первых двух параметров может быть нулевым, и в этом случае в установленных провайдерах безопасности будет производиться поиск наивысшего приоритета для соответствующей фабрики.безопасный случайный параметр может быть нулевым, и в этом случае будет использоваться реализация по умолчанию. "
Впоследствии просто установите этот SSLContext для HttpsURLConnection:
httpsCon.setSSLSocketFactory(sc.getSocketFactory());
Если для целей отладки вам нужна полностью доверяющая, хотя и небезопасная реализация trustCert, то вы можете инициализировать ее следующим образом и использовать в качестве второго параметра в init ().
(эта реализация полностью отключает SSLпроверка и не должна использоваться вне ситуации отладки / разработки)
// Create a trust manager that does not validate certificate chains
TrustManager[] trustCerts = new TrustManager[]{
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
}
};