Hello! While debugging some TLS stuff, I noticed a few oddities. Specifically, MRI's openssl supports different protocol methods than JRuby does.
I tested with MRI 2.1.2, MRI 1.9.3, and JRuby 1.7.13. Differences:
# Comparing OpenSSL::SSL::SSLContext::METHODS
>> mri212 - jruby
=> [:TLSv1_2, :TLSv1_2_server, :TLSv1_2_client, :TLSv1_1, :TLSv1_1_server, :TLSv1_1_client]
>> jruby - mri212
=> [:SSLv2, :SSLv2_server, :SSLv2_client, :TLS, :"TLSv1.1"]
>> mri193 - jruby
=> []
>> jruby - mri193
=> [:SSLv2, :SSLv2_server, :SSLv2_client, :TLS, :"TLSv1.1"]
% rvm 1.9.3,2.1.2,1.7.13 do ruby -ropenssl -e 'p [RUBY_PLATFORM,RUBY_ENGINE,RUBY_VERSION] => OpenSSL::SSL::SSLContext::METHODS'
{["x86_64-linux", "ruby", "1.9.3"]=>[:TLSv1, :TLSv1_server, :TLSv1_client, :SSLv3, :SSLv3_server, :SSLv3_client, :SSLv23, :SSLv23_server, :SSLv23_client]}
{["x86_64-linux", "ruby", "2.1.2"]=>[:TLSv1, :TLSv1_server, :TLSv1_client, :TLSv1_2, :TLSv1_2_server, :TLSv1_2_client, :TLSv1_1, :TLSv1_1_server, :TLSv1_1_client, :SSLv3, :SSLv3_server, :SSLv3_client, :SSLv23, :SSLv23_server, :SSLv23_client]}
{["java", "jruby", "1.9.3"]=>[:TLSv1, :TLSv1_server, :TLSv1_client, :SSLv2, :SSLv2_server, :SSLv2_client, :SSLv3, :SSLv3_server, :SSLv3_client, :SSLv23, :SSLv23_server, :SSLv23_client, :TLS, :"TLSv1.1"]}
Hello! While debugging some TLS stuff, I noticed a few oddities. Specifically, MRI's openssl supports different protocol methods than JRuby does.
I tested with MRI 2.1.2, MRI 1.9.3, and JRuby 1.7.13. Differences:
Curiosities and concerns:
TLSv1.1where MRI does not. MRI usesTLSv1_1Data: