Falha no handshake SSL - Java 1.8
Apenas avisei as pessoas sobre um problema que muitos pareciam ter após atualizar para o Java 1.8. Nem todas as soluções são as mesmas, portanto, postando como eu resolvi isso.
Mas primeiro ... Esta não é uma solução digna de sistemas de produção, pois a segurança está sendo efetivamente rebaixada. No entanto, se você estiver bloqueado nos testes, etc., provavelmente é bastante adequado.
Meu problema foi que, não importa o que eu fiz ... habilitei o SSLv3 etc. Sempre recebi
"javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure".
Aqui estão os passos que tomei para 'resolver' isso.
Primeiro, descobri qual cifra o servidor estava usando. Eu fiz isso via openssl.
openssl s_client -host yourproblemhost.com -port 443
Isso produz (no final ...)
SSL-Session:
Protocol : TLSv1.2
Cipher : RC4-MD5
Agora .. o que usamos 'Java-wise' para habilitar essa cifra?
Nesse link, ele possui os nomes e seus equivalentes Java. Portanto, para RC4-MD5, temos SSL_RSA_WITH_RC4_128_MD5.
tudo bem. Agora eu adicionei uma propriedade System.
-Dhttps.cipherSuites=SSL_RSA_WITH_RC4_128_MD5
E no meu código ...
Security.setProperty("jdk.tls.disabledAlgorithms", "" /*disabledAlgorithms */ );
Novamente..este é um último recurso absoluto 'correção'... Mas se você está batendo a cabeça contra uma parede para fazê-la funcionar (para testes), espero que seja útil.