java 0dh_Java SSL DH密钥对生成 – Prime大小错误

首先,“无限的力量”在这里无关紧要.这将解决完全不同的问题,即你不能使用AES-256使用密码套件(并且如果对等方坚持它们根本不能握手). JVM的比特也无关紧要;这个(不是很合理)对DH的限制是在SunJCE的“无处不在”字节码中.

您可以使用BouncyCastle作为加密提供程序,而无需更改执行SSL连接的代码(在您的案例中为Scribe),但是从我读过的内容中,BC首选提供程序会导致其他问题.如果你想尝试,或者将bcprov-version.jar放在JRE / lib / exit中并编辑JRE / lib / security / java.security;或者将它放在类路径中的任何位置,并让你的init代码调用java.security.Security.insertProviderAt(new org.bouncycastle.jce.provider.BouncyCastleProvider(),position);

我建议从你的本地系统工作的原因开始.当我用openssl尝试ssl.reddit.com时,它支持ECDHE-RSA(带有P-256)和带有dh 2048位的DHE-RSA. Suncle Java 7确实支持并且更喜欢ECDHE,我希望OpenJDK也可以,但可能没有,或者有时候没有;我知道RedHat直到最近才在其openssl的rpms中使用ECC,如果他们在openjdk中这样做的话,我也不会感到惊讶.如果您编译并运行以下命令(使用ssl.reddit.com 443),它将使用您的JRE的所有默认SSL设置(我希望/希望Scribe也在使用)来告诉您在系统上协商的套件:

//nopackage DThompson 2012.08.13b

import java.net.InetSocketAddress;

import java.net.Socket;

import javax.net.ssl.SSLSocket;

import javax.net.ssl.SSLSocketFactory;

public class JustBConnectSSL {

/* (optionally bind and) just make SSL connection, for testing reach and trust

* uses default providers, truststore (normally JRE/lib/security/[jsse]cacerts),

* and keystore (normally none), override with -Djavax.net.ssl.{trust,key}Store*

*/

public static void main (String[] args) throws Exception {

if( args.length < 2 ){ System.out.println ("Usage: tohost port [fromaddr [fromport]]"); return; }

Socket sock = SSLSocketFactory.getDefault().createSocket();

if( args.length > 2 )

sock.bind (new InetSocketAddress (args[2], args.length>3? Integer.parseInt(args[3]): 0));

sock.connect (new InetSocketAddress (args[0], Integer.parseInt(args[1])));

System.out.println (sock.getInetAddress().getHostName() + " = " + sock.getInetAddress().getHostAddress());

((SSLSocket)sock).startHandshake();

System.out.println ("connect okay " + ((SSLSocket)sock).getSession().getCipherSuite());

}

}

如果测试获得_DHE_RSA_something,则JRE中的加密提供程序必须与Suncle中的加密提供程序不同,可以由Ubuntu更改,也可以在系统上进行某些自定义或修补.如果测试得到_ECDHE_RSA_something但OpenShift没有,他们可能会以某种方式禁用ECC / ECDHE.如果他们能够做到最好(ECDHE-P-256至少与DH-2048一样安全,可能更有效).否则,直到Oracle修复此问题(显然是8),我认为可以依赖的唯一方法是禁用DHE套件(并回退到普通RSA,这可能对NSA不安全);在实际创建SSLSocket的代码中最简单,但如果Scribe(像大多数Java Web客户端一样)使用URL – > HttpsUrlConnection及其默认的SSLSocketFactory,您可以替换一个调整后的工厂,它会更改EnabledCiphers列表中的问题#6851461(尽管对于拥有良好公共证书的主机,您不需要该解决方案的自定义信任管理器部分).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值