[ 
https://issues.apache.org/jira/browse/HTTPASYNC-111?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Oleg Kalnichevski resolved HTTPASYNC-111.
-----------------------------------------
    Resolution: Information Provided

> SSL issue using SSLIOSessionStrategy and PoolingNHttpClientConnectionManager
> ----------------------------------------------------------------------------
>
>                 Key: HTTPASYNC-111
>                 URL: https://issues.apache.org/jira/browse/HTTPASYNC-111
>             Project: HttpComponents HttpAsyncClient
>          Issue Type: Bug
>    Affects Versions: 4.1.1
>            Reporter: sudhish
>
> I am new to this so please pardon (and also educate me) if I am doing this 
> wrong on this board.
> I am running on WebSphere application server (v 8.5.1) and Java 1.6 
> I found an issue using the async client.. My code looks like this.
> Registry<SchemeIOSessionStrategy> sessionStrategyRegistry = 
> RegistryBuilder.<SchemeIOSessionStrategy>create()
>                           .register("http", NoopIOSessionStrategy.INSTANCE)
>                           .register("https", 
> SSLIOSessionStrategy.getSystemDefaultStrategy())
>                           .build();
>                        IOReactorConfig ioReactorConfig = 
> IOReactorConfig.custom()
>                               
> .setIoThreadCount(Runtime.getRuntime().availableProcessors())
>                               .setConnectTimeout(30000)
>                               .setSoTimeout(30000)
>                               .build();
>                        
>                        ConnectingIOReactor ioReactor = new 
> DefaultConnectingIOReactor(ioReactorConfig);
>                       
>                        PoolingNHttpClientConnectionManager connManager = new 
> PoolingNHttpClientConnectionManager(
>                               ioReactor, sessionStrategyRegistry);
>                        connManager.setDefaultMaxPerRoute(2);
>                        connManager.setMaxTotal(20);
>           
>                         
>                
>               closeableHttpAsyncClient = HttpAsyncClientBuilder.create()
>                                       
> .setDefaultRequestConfig(RequestConfig.custom()
>                                                               
> .setConnectionRequestTimeout(30000)
>                                                               
> .setConnectTimeout(30000)
>                                                       .setSocketTimeout(60000)
>                                                       
> .setCookieSpec(CookieSpecs.IGNORE_COOKIES)
>                                                       .build())
>                                 .setConnectionManager(connManager)
>                                 
>                       .build();
> When I execute 
> Future<HttpResponse> future = closeableHttpAsyncClient.execute(request1, 
> null);
> It fails with a
> aused by: 
> java.security.cert.CertPathValidatorException: The certificate issued by 
> CN=Principal Root CA G2 is not trusted; internal cause is: 
>       java.security.cert.CertPathValidatorException: Certificate chaining 
> error
>       at com.ibm.security.cert.BasicChecker.<init>(BasicChecker.java:111)
>       at 
> com.ibm.security.cert.PKIXCertPathValidatorImpl.engineValidate(PKIXCertPathValidatorImpl.java:176)
>       at 
> com.ibm.security.cert.PKIXCertPathBuilderImpl.myValidator(PKIXCertPathBuilderImpl.java:737)
>       at 
> com.ibm.security.cert.PKIXCertPathBuilderImpl.buildCertPath(PKIXCertPathBuilderImpl.java:649)
>       at 
> com.ibm.security.cert.PKIXCertPathBuilderImpl.buildCertPath(PKIXCertPathBuilderImpl.java:595)
>       at 
> com.ibm.security.cert.PKIXCertPathBuilderImpl.engineBuild(PKIXCertPathBuilderImpl.java:356)
>       ... 25 more
> Caused by: 
> java.security.cert.CertPathValidatorException: Certificate chaining error
>       at com.ibm.security.cert.CertPathUtil.findIssuer(CertPathUtil.java:316)
>       at com.ibm.security.cert.BasicChecker.<init>(BasicChecker.java:108)
>       ... 30 more
> My certs are ok. 
> Without using Asycn client. When I run using non-async client. It works 
> (working code below). Since I am in WebSphere and it makes it own 
> configurations for SSL. I was forced to use 
> SSLConnectionSocketFactory.getSystemSocketFactory() <-- Without this, I get 
> the same error as above. 
> CloseableHttpClient client = HttpClients.custom()
>               
> .setSSLSocketFactory(SSLConnectionSocketFactory.getSystemSocketFactory()) // 
> this line is key!
>                               .build();
>               final HttpGet request1 = new HttpGet(Url);
>               CloseableHttpResponse resp = client.execute(request1);
> I went through all your examples and under the assumption that
> SSLCOntext.createSystemDefault() should exhibit the same behaviour as 
> SSLConnectionSocketFactory.getSystemSocketFactory() ?.. 
> It appears its not?  Am I missing something?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to