[
https://issues.apache.org/jira/browse/BROOKLYN-456?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15943671#comment-15943671
]
Mark McKenna edited comment on BROOKLYN-456 at 3/27/17 5:21 PM:
----------------------------------------------------------------
[~geomacy] I just tried the below test code pointing at https://httpbin.org/get
and it worked ... Although i believe there is something up with the ssl cert as
i had to trust all certs
Apache httpclient 4.5.2
{code}
public void testApacheHttpClent() throws IOException, KeyStoreException,
NoSuchAlgorithmException, KeyManagementException {
final CloseableHttpClient httpclient = HttpClients.custom()
.setSSLContext(new SSLContextBuilder().loadTrustMaterial((chain,
authType) -> true).build())
.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE).build();
try {
final HttpGet httpget = new HttpGet("https://httpbin.org/get");
System.out.println("Executing request " + httpget.getRequestLine());
// Create a custom response handler
final ResponseHandler<String> responseHandler = response -> {
int status = response.getStatusLine().getStatusCode();
if (status >= 200 && status < 300) {
final HttpEntity entity = response.getEntity();
return entity != null ? EntityUtils.toString(entity) : null;
} else {
throw new ClientProtocolException("Unexpected response status:
" + status);
}
};
String responseBody = httpclient.execute(httpget, responseHandler);
System.out.println("----------------------------------------");
System.out.println(responseBody);
} finally {
httpclient.close();
}
}
{code}
cc [[email protected]]
was (Author: m4rkmckenna):
[~geomacy] I just tried the below test code pointing at https://httpbin.org/get
and it worked ... Although i believe there is something up with the ssl cert as
i had to trust all certs
{code}
public void testApacheHttpClent() throws IOException, KeyStoreException,
NoSuchAlgorithmException, KeyManagementException {
final CloseableHttpClient httpclient = HttpClients.custom()
.setSSLContext(new SSLContextBuilder().loadTrustMaterial((chain,
authType) -> true).build())
.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE).build();
try {
final HttpGet httpget = new HttpGet("https://httpbin.org/get");
System.out.println("Executing request " + httpget.getRequestLine());
// Create a custom response handler
final ResponseHandler<String> responseHandler = response -> {
int status = response.getStatusLine().getStatusCode();
if (status >= 200 && status < 300) {
final HttpEntity entity = response.getEntity();
return entity != null ? EntityUtils.toString(entity) : null;
} else {
throw new ClientProtocolException("Unexpected response status:
" + status);
}
};
String responseBody = httpclient.execute(httpget, responseHandler);
System.out.println("----------------------------------------");
System.out.println(responseBody);
} finally {
httpclient.close();
}
}
{code}
cc [[email protected]]
> "SSLException: internal_error" upon trying to connect to site requiring SNI
> ---------------------------------------------------------------------------
>
> Key: BROOKLYN-456
> URL: https://issues.apache.org/jira/browse/BROOKLYN-456
> Project: Brooklyn
> Issue Type: Bug
> Reporter: Geoff Macartney
> Priority: Minor
>
> On 17th March brooklyn-server builds began failing, such as
> https://builds.apache.org/view/Brooklyn/job/brooklyn-server-master/492/.
> The errors were failures in tests
> {quote}
> org.apache.brooklyn.camp.brooklyn.HttpCommandEffectorYamlRebindTest.testRebindWhenHealthy
> org.apache.brooklyn.camp.brooklyn.HttpCommandEffectorYamlTest.testHttpCommandEffectorWithParameters
> org.apache.brooklyn.camp.brooklyn.CompositeEffectorYamlRebindTest.testRebindWhenHealthy
> org.apache.brooklyn.camp.brooklyn.CompositeEffectorYamlTest.testCompositeEffector
> {quote}
> all of which issued requests to "https://httpbin.org" for test purposes.
> There seems to have been a change in configuration on httpbin.org on the 16h
> of March, see
> [here|https://lists.apache.org/thread.html/2d7bfb556b5459590d266d079043861bc34c0b921a2b5346ae9fd8ae@%3Cdev.brooklyn.apache.org%3E].
> However the certificate changes appear not to be the problem, as far as I can
> tell, as the certificate chain from the site has root "Let's Encrypt
> Authority X3" (SHA1
> Fingerprint=E6:A3:B4:5B:06:2D:50:9B:33:82:28:2D:19:6E:FE:97:D5:95:6C:CB),
> which is signed by CA "DST Root CA X3" (Certificate fingerprint
> DA:C9:02:4F:54:D8:F6:DF:94:93:5F:B1:73:26:38:CA:6A:D7:7C:13), which is in the
> cacerts file of Java 8 by default.
> I believe the problem lies on the Java SSL client side, specifically that the
> client is not including the SNI (Server Naming Indicator) extension in the
> SSL handshake. httpbin requires this, compare
> {code}
> openssl s_client -showcerts -connect httpbin.org:443 </dev/null
> CONNECTED(00000003)
> 7944:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake
> failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-59.60.1/src/ssl/s23_lib.c:185:
> {code}
> with the output from
> {code}
> openssl s_client -servername httpbin.org -showcerts -connect httpbin.org:443
> </dev/null
> {code}
> The result is that the connection attempt fails with
> {code}
> SSLException: Received fatal alert: internal_error
> {code}
> Searching around the web there seem to be a number of other people who have
> encountered this problem, e.g.
> https://forums.aws.amazon.com/message.jspa?messageID=669911. The issue seems
> to be fixed only in Java 9, but there may be workarounds on 7 and 8. I
> haven't tried these out yet.
> I will look at adding a test in Brooklyn to record this.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)