Estou tentando consumir uma wsdl porem sempre está me retornando essa mensagem:
Connection has been shutdown: 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
A política de segurança da JVM não está autorizando a requisição porque o certificado do servidor não está sendo reconhecido. Pode ser um certificado falso ou auto-assinado.
Para resolver isso, você pode baixar o certificado e adicionar ele na lista de certificados aceitos do sistema operacional, ou então quando invocar a JVM, falar pra ela que esse certificado é conhecido (não sei exatamente como fazer isso, mas sei que tem como).
J
jjander.cunha
Como Faço para apontar um certificado falso ou auto-assinado?
lvbarbosa
J
jjander.cunha
Estou usando a segunda opção antes de chamar o método para consumir o web service.
porem continua dando o mesmo erro, tem um lugar especifico para inserir esse código?
J
jjander.cunha
Blocodecitação// Create a trust manager that does not validate certificate chainsTrustManager[]trustAllCerts=newTrustManager[]{newX509TrustManager(){publicjava.security.cert.X509Certificate[]getAcceptedIssuers(){returnnewX509Certificate[0];}publicvoidcheckClientTrusted(java.security.cert.X509Certificate[]certs,StringauthType){}publicvoidcheckServerTrusted(java.security.cert.X509Certificate[]certs,StringauthType){}}};
// Install the all-trusting trust managertry{SSLContextsc=SSLContext.getInstance("SSL");sc.init(null,trustAllCerts,newjava.security.SecureRandom());HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());}catch(GeneralSecurityExceptione){}// Now you can access an https URL without having the certificate in the truststoretry{URLurl=newURL("https://www.teste.com.br");}catch(MalformedURLExceptione){System.out.print(e.getMessage());}
Bloco de citação
acho que se fosse uma url funcionaria
acho que aqui HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); precisaria mudar alguma coisa para apontar o método de um wsdl HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
J
jjander.cunha
Alguém pode me dar uma luz utilizando o código acima mais para consumir um método wsdl, a qual o link é um https?