Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SSLHandshakeException #73

Open
juliosilvacwb opened this issue Mar 26, 2018 · 2 comments
Open

SSLHandshakeException #73

juliosilvacwb opened this issue Mar 26, 2018 · 2 comments
Labels

Comments

@juliosilvacwb
Copy link

juliosilvacwb commented Mar 26, 2018

Boa tarde, estou recebendo o seguinte erro ao utilizar a api para gerar uma credencial, alguma dica sobre como resolver?

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) at sun.security.ssl.Alerts.getSSLException(Alerts.java:154) at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1979) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1086) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:394) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353) at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:141) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353) at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55) at br.com.datajuri.financeiro.pjbank.PJBankClient.doRequest(PJBankClient.java:99) at br.com.datajuri.financeiro.pjbank.Credenciamento.create(Credenciamento.java:65) at br.com.datajuri.financeiro.pjbank.Credenciamento.create(Credenciamento.java:35)

@juliosilvacwb
Copy link
Author

Problema solucionado.

Trata-se de uma configuração de SSL, para corrigir foi necessário editar a classe PJBankClient, alterando o conteúdo do método getHttpClient para:

`try {
System.setProperty("jsse.enableSNIExtension", "true");
Security.insertProviderAt(new BouncyCastleProvider(), 1);
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
SSLContextBuilder sslBuilder = new SSLContextBuilder();

	   	sslBuilder.loadTrustMaterial(trustStore, new TrustStrategy() {
	   		@Override
	   		public boolean isTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
	   			return true;
	   		}
	   	});

	   	@SuppressWarnings("deprecation")
		SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslBuilder.build(), new String[] { "TLSv1.2", "TLSv1.1", "TLSv1", "SSLv3"}, null, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
	   
	   	PlainConnectionSocketFactory pcsf = new PlainConnectionSocketFactory();
	   	
	   	@SuppressWarnings("rawtypes")
		Registry socketFactoryRegistry = RegistryBuilder.create().register("https", sslsf).register("http", pcsf).build();
	   
	   	
	   	@SuppressWarnings("unchecked")
		PoolingHttpClientConnectionManager multiConnectionManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
	   	multiConnectionManager.setMaxTotal(100);
	   	multiConnectionManager.setDefaultMaxPerRoute(10);
	   
	   	HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
	   	httpClientBuilder.setConnectionManager(multiConnectionManager);
	   	
		return httpClientBuilder.disableContentCompression().setSSLSocketFactory(sslsf).build();
		
		
	} catch (KeyStoreException | NoSuchAlgorithmException | KeyManagementException e) {
		e.printStackTrace();
	}` 

@msfidelis
Copy link
Contributor

@viniciusls, mata essa no peito pra gente?

@viniciusls viniciusls added the bug label Apr 5, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants