[RESOLVIDO]Https em aplicações desktop‏

Olá pessoal,

Estou com uma dúvida sobre a conexão Https no java, eu estou utilizando HttpsUrlConnection para fazer está conexão.
O certificado que eu estou utilizando é auto assinado gerado utilizando as ferramentas keytool e openSSL, o https do jboss já está funcionando eu instalei o meu certificado no browser e a comunicação funcionou normal. O problema é que na minha aplicação desktop está dando erro na hora de fazer o handshake, o erro que ocorre é o seguinte:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

eu achei no google pessoas que tiveram o mesmo problema e resolveram inicializando o SSLContext com um trust manager vazio TrustManager[], mas está solucção não funcionou para mim.

Alguem sabe como resolver esse problema?

Vc tem q instalar o certificado na JVM.

http://www.guj.com.br/java/228427-nfe—bad_certificate-no-parana-goias#1171216

Instalei na jvm mas o erro persiste, mas alguem pode ajudar?

Tem um programinha que eu baixei no site da sun que da o mesmo problema, mas te da a opção de adicionar o certificado do servidor na lista de certificados verdadeiros, eu usei ele e ele adicionou, mas mesmo assim minha aplicação rodando na mesma JVM não consegue encontrar o certificado.

Alguem já passou por este problema?

[Editado]
Baixei um programa no site da sun que trabalhar com certificado SSL, é uma classe que pega o certificado do servidor e salva em um arquivo na máquina. Este programa consegue fazer o handshake do ssl sem problemas.

Usei o mesmo código no meu programa e da erro no handshake do HttpsUrlConnection, alguem sabe como resolver?

Ola pessoal!

Consegui resolver é que eu estava setando o defaultSSLSocketFactory depois de instânciar

URL page = new URL(url); HttpsURLConnection connection = (HttpsURLConnection) page.openConnection(); conn.setDefaultSSLSocketFactory(this.getContext().getSocketFactory());

fiz assim e funcionou

URL page = new URL(url); HttpsURLConnection.setDefaultSSLSocketFactory(this.getContext().getSocketFactory()); HttpsURLConnection connection = (HttpsURLConnection) page.openConnection();

Agora é só testar se os dados estão criptografados.