Consumindo wsdl

6 respostas
J

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

Alguém sabe como faço para resolver isso?

Observação: pelo soapui funciona normalmente.

6 Respostas

lvbarbosa

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

Como Faço para apontar um certificado falso ou auto-assinado?

lvbarbosa
J

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
Bloco de citação

// Create a trust manager that does not validate certificate chains

TrustManager[] trustAllCerts = new TrustManager[] {

new X509TrustManager() {

public java.security.cert.X509Certificate[] getAcceptedIssuers() {

return new X509Certificate[0];

}

public void checkClientTrusted(

java.security.cert.X509Certificate[] certs, String authType) {

}

public void checkServerTrusted(

java.security.cert.X509Certificate[] certs, String authType) {

}

}

};
// Install the all-trusting trust manager
	try {
	    SSLContext sc = SSLContext.getInstance("SSL"); 
	    sc.init(null, trustAllCerts, new java.security.SecureRandom()); 
	    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
	} catch (GeneralSecurityException e) {
	} 
	// Now you can access an https URL without having the certificate in the truststore
	try { 
	    URL url = new URL("https://www.teste.com.br"); 
	} catch (MalformedURLException e) {
		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

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?

Criado 27 de fevereiro de 2019
Ultima resposta 2 de mar. de 2019
Respostas 6
Participantes 2