Acessar webservice com HTTPS  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
ssousuke
Thread.start()

Membro desde: 04/04/2006 11:33:53
Mensagens: 28
Offline

Ola,

Estou acessando um webservice https. E para isso antes de fazer a chamada ao webservice chamo a seguinte linha de comando:

System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "c:\\certificado.keystore");

Até ai funcionou muito bem, o problema é q hoje o certificado passou a dar o seguinte problema:

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


Para resolver precisei gerar novamente o keystore e funcionou. Aparentemente eu suponho q o problema é q o certificado antigo tenha expirado, porém não sei como fazer para ter certeza disso, o fato é q depois q eu gerei novamento o certificado ai funcionou.

Alguem poderia me ajudar a identificar o q aconteceu, para que esse problema nao se repita mais?!

Não sei se ajuda mas estou gerando o keystore com uma classe java pronta q eu peguei na internet:
- http://blogs.sun.com/andreas/entry/no_more_unable_to_find
- http://blogs.sun.com/andreas/resource/InstallCert.java

Agradeço a atenção de todos.
Abs

Felipe Regalgo


Daniel.F
GUJ Ranger

Membro desde: 29/03/2007 18:30:39
Mensagens: 909
Offline

Posso estar errado e falando, mas tentar explicar o que acho que aconteceu.

Primeiro você não pode acessar nenhuma url https em código java sei que você a jvm que esta URL é confiável,
para um webservice ou site funcionar com https ele tem que possuir um certificado digital é através que é criptografado
as informações.

Você JVM que a url é de confiança gerando um arquivo com as classes que postou,
em seguida você diz a JVM para utilizar o seu arquivo de url de confiança não o que vem com ela.
Com as seguintes linhas:

Note a propriedade: trustStore algo mais ou menos como repositório de confiança.

O certificado do servidor do webservice deve ter vencido, por isso ele deve ter trocado o mesmo.
Como no arquivo trustStore armazena o certificado usado pelo url, bastou você atualizar seu arquivo
Keystore.

Não tem como evitar que isto aconteça a não ser que o servidor tenha adotado um certificado sem validade.

This message was edited 1 time. Last update was at 18/03/2011 14:22:11



[Email]
felipe.regalgo
Debugger

Membro desde: 25/08/2006 13:38:30
Mensagens: 57
Offline

Entendi.

Vou conversar com o pessoal do webservice para verificar a possibilidade de eles adotarem um certificado sem validade.

Caso isso não seja possivel como devo proceder para conseguir acessar esse webservice? Devo criar uma rotina no java para verificar com antecedencia q o certificado esta para vencer e com isso gerar novo certificado? Como isso é feito normalmente?

[]´s
Felipe Regalgo
kelvinbaiano
HelloWorld

Membro desde: 08/06/2009 08:02:21
Mensagens: 12
Offline

Eu acho que certificado sem validade acho que não é possível. Peça para o servidor do webService gerar um certificado com uma validade grande.
No webService que eu fiz a validade era de 10 anos... =)
felipe.regalgo
Debugger

Membro desde: 25/08/2006 13:38:30
Mensagens: 57
Offline

Ola,

Tem esses links aqui para ajudar quem tiver com esse problema:

http://jarbaslima.blogspot.com/2009/09/geracao-de-chaves-em-java.html
http://jarbaslima.blogspot.com/2011/03/conexao-ssl-em-aplicacoes-java.html

[]´s
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team