<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>