rest - Jersey error to connect to service using https on Java 6 -


i'm running rest service on wildfly 9 using https self signed certificate using configuration.

to bypass ssl verification i'm using code:

public static client createignoresslclient() {     clientconfig clientconfig = new clientconfig();     clientconfig.connectorprovider(new httpurlconnectorprovider());     sslcontext sslcontext;     try {         sslcontext = sslcontext.getinstance("ssl");         sslcontext.init(null, new trustmanager[]{new x509trustmanager() {             public void checkclienttrusted(x509certificate[] arg0, string arg1) throws certificateexception {}             public void checkservertrusted(x509certificate[] arg0, string arg1) throws certificateexception {}             public x509certificate[] getacceptedissuers() { return new x509certificate[0]; }          }}, new java.security.securerandom());     } catch (exception e) {         throw new runtimeexception(e);     }     return clientbuilder.newbuilder()             .sslcontext(sslcontext)             .hostnameverifier(createdummyhostnameverifier())             .withconfig(clientconfig)             .build(); }    

i'm using jersey 2.6 keep compatibility java 6 (some applications running in jboss 4).

<dependency>     <groupid>org.glassfish.jersey.core</groupid>     <artifactid>jersey-client</artifactid>     <version>2.6</version> </dependency>    <dependency>     <groupid>org.glassfish.jersey.media</groupid>     <artifactid>jersey-media-moxy</artifactid>     <version>2.6</version> </dependency> 

everything works fine using java 8 , 7. using java 6 receive error:

21/07/2016 16:38:36 org.glassfish.jersey.client.clientrequest writeentity severe: error while committing request output stream. javax.net.ssl.sslexception: received fatal alert: unexpected_message     @ com.sun.net.ssl.internal.ssl.alerts.getsslexception(alerts.java:190)     @ com.sun.net.ssl.internal.ssl.alerts.getsslexception(alerts.java:136)     @ com.sun.net.ssl.internal.ssl.sslsocketimpl.recvalert(sslsocketimpl.java:1682)     @ com.sun.net.ssl.internal.ssl.sslsocketimpl.readrecord(sslsocketimpl.java:932)     @ com.sun.net.ssl.internal.ssl.sslsocketimpl.performinitialhandshake(sslsocketimpl.java:1112)     @ com.sun.net.ssl.internal.ssl.sslsocketimpl.starthandshake(sslsocketimpl.java:1139)     @ com.sun.net.ssl.internal.ssl.sslsocketimpl.starthandshake(sslsocketimpl.java:1123)     @ sun.net.www.protocol.https.httpsclient.afterconnect(httpsclient.java:434)     @ sun.net.www.protocol.https.abstractdelegatehttpsurlconnection.connect(abstractdelegatehttpsurlconnection.java:166)     @ sun.net.www.protocol.http.httpurlconnection.getoutputstream(httpurlconnection.java:904)     @ sun.net.www.protocol.https.httpsurlconnectionimpl.getoutputstream(httpsurlconnectionimpl.java:230)     @ org.glassfish.jersey.client.httpurlconnector$3.getoutputstream(httpurlconnector.java:312)     @ org.glassfish.jersey.message.internal.committingoutputstream.commitstream(committingoutputstream.java:200)     @ org.glassfish.jersey.message.internal.committingoutputstream.commitstream(committingoutputstream.java:194)     @ org.glassfish.jersey.message.internal.committingoutputstream.commit(committingoutputstream.java:262)     @ org.glassfish.jersey.message.internal.outboundmessagecontext.commitstream(outboundmessagecontext.java:812)     @ org.glassfish.jersey.client.clientrequest.writeentity(clientrequest.java:543)     @ org.glassfish.jersey.client.httpurlconnector._apply(httpurlconnector.java:315)     @ org.glassfish.jersey.client.httpurlconnector.apply(httpurlconnector.java:227)     @ org.glassfish.jersey.client.clientruntime.invoke(clientruntime.java:225)     @ org.glassfish.jersey.client.jerseyinvocation$2.call(jerseyinvocation.java:671)     @ org.glassfish.jersey.internal.errors.process(errors.java:315)     @ org.glassfish.jersey.internal.errors.process(errors.java:297)     @ org.glassfish.jersey.internal.errors.process(errors.java:228)     @ org.glassfish.jersey.process.internal.requestscope.runinscope(requestscope.java:423)     @ org.glassfish.jersey.client.jerseyinvocation.invoke(jerseyinvocation.java:667)     @ org.glassfish.jersey.client.jerseyinvocation$builder.method(jerseyinvocation.java:423)     @ org.glassfish.jersey.client.jerseyinvocation$builder.put(jerseyinvocation.java:311)     @ com.oki.casi.client.testelogin.testeloginhttps(testelogin.java:79)     @ com.oki.casi.client.testelogin.main(testelogin.java:58) exception in thread "main" javax.ws.rs.webapplicationexception: http 500 internal server error     @ org.eclipse.persistence.jaxb.rs.moxyjsonprovider.writeto(moxyjsonprovider.java:810)     @ org.glassfish.jersey.message.internal.writerinterceptorexecutor$terminalwriterinterceptor.invokewriteto(writerinterceptorexecutor.java:263)     @ org.glassfish.jersey.message.internal.writerinterceptorexecutor$terminalwriterinterceptor.aroundwriteto(writerinterceptorexecutor.java:250)     @ org.glassfish.jersey.message.internal.writerinterceptorexecutor.proceed(writerinterceptorexecutor.java:162)     @ org.glassfish.jersey.message.internal.messagebodyfactory.writeto(messagebodyfactory.java:1154)     @ org.glassfish.jersey.client.clientrequest.writeentity(clientrequest.java:500)     @ org.glassfish.jersey.client.httpurlconnector._apply(httpurlconnector.java:315)     @ org.glassfish.jersey.client.httpurlconnector.apply(httpurlconnector.java:227)     @ org.glassfish.jersey.client.clientruntime.invoke(clientruntime.java:225)     @ org.glassfish.jersey.client.jerseyinvocation$2.call(jerseyinvocation.java:671)     @ org.glassfish.jersey.internal.errors.process(errors.java:315)     @ org.glassfish.jersey.internal.errors.process(errors.java:297)     @ org.glassfish.jersey.internal.errors.process(errors.java:228)     @ org.glassfish.jersey.process.internal.requestscope.runinscope(requestscope.java:423)     @ org.glassfish.jersey.client.jerseyinvocation.invoke(jerseyinvocation.java:667)     @ org.glassfish.jersey.client.jerseyinvocation$builder.method(jerseyinvocation.java:423)     @ org.glassfish.jersey.client.jerseyinvocation$builder.put(jerseyinvocation.java:311)     @ com.oki.casi.client.testelogin.testeloginhttps(testelogin.java:79)     @ com.oki.casi.client.testelogin.main(testelogin.java:58) caused by: javax.xml.bind.marshalexception 

edit: i'm trying solve issue testing client accessing 2 servers, jboss 7.1.1 , wildfly 9.0.2.

in jboss 7, can make client work https changing protocol tlsv1 ssl:

<connector name="https" protocol="http/1.1" scheme="https" socket-binding="https" secure="true">     <ssl name="ciac-ssl" key-alias="ciac-cert" password="123456" certificate-key-file="../standalone/configuration/ciac-cert.keystore" protocol="ssl"/> </connector> 

how can change configuration in wildfly?

if understand correctly, sslexception in client application runs under java 6. in client trying access service hosted on wildfly 9, using java 7 or higher. means server using different security mechanism. i stumbled upon same earlier , can see there no conclusion post either.

and makes sense if think it, why make possible developer create services using outdated , unsafe security mechanisms?

eventually decided go jdk update. attempt host jboss 4 under jdk7. example here find interesting writings on topic.


Comments