<div dir="ltr"><div class=""><p>Hi,</p><p>We are facing a problem
and I am sure this is the right place. We have a load balancer (cisco's)
and for various reasons the SSL configuration on the load balancer (the
server) side is set to use "SSLv3" protocol version. Now after setting
the same, when I access the load balancer in CHROME browser, I am able
to access the pages but I do see the below message when I click on their
security icon.</p><p style="min-height:8pt;height:8pt;padding:0px"> </p><p>"<strong>connection had to be retried using ssl 3.0</strong>" - I looked at the packet capture using wireshark and I see that browser tries <strong>TLSv1</strong> and receives a "fatal alert" from the server saying "protocol_version" and <strong>then immediately browser tries SSLv3 version</strong> and finishes the handshake. So browser is able to negotiate this as a client.</p>
<p style="min-height:8pt;height:8pt;padding:0px"> </p><p>However
when I set up a stand alone java (tried using 1.6 as well as 1.7)
client from eclipse and try connecting to the server I am getting the
below exception.</p><p style="min-height:8pt;height:8pt;padding:0px"> </p><p><span style="color:rgb(0,0,0);font-family:Verdana,Geneva,Helvetica,Arial,sans-serif;font-size:13px;font-style:normal;font-weight:normal;text-align:start;text-indent:0px">: Received fatal alert: protocol_version<span class=""> </span></span><span style="color:rgb(0,0,0);font-family:Verdana,Geneva,Helvetica,Arial,sans-serif;font-size:13px;font-style:normal;font-weight:normal;text-align:start;text-indent:0px">javax.net.ssl.SSLException: Received fatal alert: protocol_version<span class=""> </span></span></p>
<p><span style="color:rgb(0,0,0);font-family:Verdana,Geneva,Helvetica,Arial,sans-serif;font-size:13px;font-style:normal;font-weight:normal;text-align:start;text-indent:0px"><span class=""><br></span></span></p><p><span style="color:rgb(0,0,0);font-family:Verdana,Geneva,Helvetica,Arial,sans-serif;font-size:13px;font-style:normal;font-weight:normal;text-align:start;text-indent:0px"><span class="">As per various documentations, I saw two options I have</span></span></p>
<p><span style="color:rgb(0,0,0);font-family:Verdana,Geneva,Helvetica,Arial,sans-serif;font-size:13px;font-style:normal;font-weight:normal;text-align:start;text-indent:0px"><span class=""><br></span></span></p><p>1. to set https.protocol system property to SSLv3. [<span style="text-decoration:underline">this works for us</span>,
but the problem is it is affects the outbound SSL calls globally. I
have another outbound SSL call to another server which does not work
with SSLv3]</p><p style="min-height:8pt;height:8pt;padding:0px"> </p><p>2. setEnabledprotocols() - <span style="text-decoration:underline">this works as well</span>
but sometimes, we dont have access to the socket directly (sometime we
generates stubs using third party and the stub takes care of the low
level connection stuff, so no access to that socket).</p><p style="min-height:8pt;height:8pt;padding:0px"> </p><p><span style="color:rgb(87,87,87);text-decoration:underline"><strong>But my actual question is</strong></span>,
If by default TLSv1/SSLv3 and SSLv2Hello(just the format I believe) are
enabled in java, why is JSSE implementation not able to negotiate like
how chrome browser is able to negotiate. Is this expected? If browser is
doing it, I believe it should be part of some SSL RFC and if that is
the case, same functionality of this "negotiation" should be provided by
java itself right?</p><p style="min-height:8pt;height:8pt;padding:0px"> </p><p>I did go through this <strong><a class="" href="http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/security/ssl/SSLSocketImpl.java">http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/security/ssl/SSLSocketImpl.java</a></strong> and was not able to find any part for this negotiation during handshake.</p>
<p style="min-height:8pt;height:8pt;padding:0px"> </p><p>Is
there a possibility of issue from the server side (load balancer) that
i. I see that server sends fatal alert but that being cisco I believe
the ssl implementation should be perfect and that is expected. Am I
wrong?</p><p style="min-height:8pt;height:8pt;padding:0px"> </p><p>Issue happens both in java 1.6 and 1.7. Do let me know if more information would be required to answer, will be happy to help.</p><p><br></p><p>Thanks</p>
<p>Rajarajan PSJ<br></p><p><br></p><p><br></p></div></div>