JRuby Net :: HTTP因OpenSSL :: SSL :: SSLError失败:证书不符合算法约束

问题描述:

Jruby jruby-1.7.0.preview1 JDK:Java™SE运行时环境(build 1.7.0_05-b05 )JRuby Net :: HTTP因OpenSSL :: SSL :: SSLError失败:证书不符合算法约束

我通过HTTPS从REST web服务获取数据,现在一直很好。

我周末升级到Ubuntu 12.04(从11.10开始) - 现在这个失败了。我只能假设在那段时间内我的JVM发生了一些变化。我以前认为我在Java 7上,所以我很困惑。

无论哪种方式,是在代码失败的是网:: HTTP.start的部分:

require "net/http" 

Net::HTTP.start(uri.host, :use_ssl => true, :ca_path => "/etc/ssl/certs") do |http| 
    #... 
end 

和错误是:

OpenSSL::SSL::SSLError: Certificates does not conform to algorithm constraints 
    from org/jruby/ext/openssl/SSLSocket.java:180:in `connect' 
    from /opt/jruby/active/lib/ruby/1.9/net/http.rb:799:in `connect' 
    from org/jruby/ext/timeout/Timeout.java:103:in `timeout' 
    from /opt/jruby/active/lib/ruby/1.9/net/http.rb:799:in `connect' 
    from /opt/jruby/active/lib/ruby/1.9/net/http.rb:755:in `do_start' 
    from /opt/jruby/active/lib/ruby/1.9/net/http.rb:744:in `start' 
    from /opt/jruby/active/lib/ruby/1.9/net/http.rb:557:in `start' 

任何帮助,将不胜感激。

编辑:

我只是测试这个Java 6的,它工作得很好。

我想知道是否有做:https://forums.oracle.com/forums/thread.jspa?threadID=2405379

找到了解决方案概述这里: http://sim.ivi.co/2011/07/java-se-7-release-security-enhancements.html

短版: 走进JAVA_HOME/JRE/lib/security中/ java.security 并改变

jdk.certpath.disabledAlgorithms=MD2 

jdk.certpath.disabledAlgorithms= 

但是,请注意,这会重新启用MD2哈希,这已证明不安全。

参见: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-2409