2014-10-17 17:59 GMT+04:00 Christopher Schultz <ch...@christopherschultz.net>:
> All,
>
> On 10/17/14 9:52 AM, schu...@apache.org wrote:
>> Author: schultz
>> Date: Fri Oct 17 13:52:24 2014
>> New Revision: 1632577
>>
>> URL: http://svn.apache.org/r1632577
>> Log:
>> Maintain SSL_OP parity with OpenSSL: add SSL_OP_NO_TLSv1_1 and 
>> SSL_OP_NO_TLSv1_2.
>>
>> Modified:
>>     tomcat/trunk/java/org/apache/tomcat/jni/SSL.java
>>
>> Modified: tomcat/trunk/java/org/apache/tomcat/jni/SSL.java
>> URL: 
>> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/jni/SSL.java?rev=1632577&r1=1632576&r2=1632577&view=diff
>> ==============================================================================
>> --- tomcat/trunk/java/org/apache/tomcat/jni/SSL.java (original)
>> +++ tomcat/trunk/java/org/apache/tomcat/jni/SSL.java Fri Oct 17 13:52:24 2014
>> @@ -135,6 +135,9 @@ public final class SSL {
>>      public static final int SSL_OP_NO_SSLv2                         = 
>> 0x01000000;
>>      public static final int SSL_OP_NO_SSLv3                         = 
>> 0x02000000;
>>      public static final int SSL_OP_NO_TLSv1                         = 
>> 0x04000000;
>> +    public static final int SSL_OP_NO_TLSv1_1                       = 
>> 0x08000000;
>> +    public static final int SSL_OP_NO_TLSv1_2                       = 
>> 0x10000000;
>> +
>>      public static final int SSL_OP_NO_TICKET                        = 
>> 0x00004000;
>
> I just noticed that this conflicts with the SSL_OPs defined just below
> these in SSL.java:
>
>>     /* The next flag deliberately changes the ciphertest, this is a check
>>      * for the PKCS#1 attack */
>>     public static final int SSL_OP_PKCS1_CHECK_1                    = 
>> 0x08000000;
>>     public static final int SSL_OP_PKCS1_CHECK_2                    = 
>> 0x10000000;
>
> At some point (1.0, I think), OpenSSL deprecated the PKCS1 constants,
> made their values 0x0, and re-purposed the flag values for the TLSv1_1
> and TLSv1_2 options shown above.
>
> Without checking the OpenSSL version, client code will have no way of
> knowing whether they are checking for the TLSv1_x or PKCS1 SSL_OP flags,
> especially if the Java code has been compiled against a prior version of
> SSL.java (because javac stupidly copies constant values from one class
> to another instead of looking them up at runtime, at least the last time
> I checked).
>
> What should we do, here? We can make those constants dynamic, but then
> we have to do the OpenSSL library load in the class's static initializer
> instead of in APRLifecycleListener.
>
> We could remove SSL_OP_PKCS1_CHECK but then that means anyone relying on
> it for use with OpenSSL 0.9.8* might be out of luck.
>
> I'm a bit nervous about picking a winner here between OpenSSL 0.9.8 and
> 1.0.1.
>
> Any thoughts?
>


I think just mark them as @Deprecated as "Not defined in OpenSSL 1.x",
"Removed since OpenSSL 1.0" or "Have different values in different
OpenSSL versions".

Tomcat code does not use them.

Best regards,
Konstantin Kolinko

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to