栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java SSL DH密钥对生成-原始大小错误

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java SSL DH密钥对生成-原始大小错误

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

您可以将BouncyCastle用作加密提供程序,而无需更改进行SSL连接的代码(在您的情况下为Scribe),但是据我所知,使BC成为首选提供程序会导致其他问题。如果仍然要尝试,请将bcprov-
version.jar放在JRE / lib / exit中,然后编辑JRE / lib / security /
java.security。或将其放在您的类路径中的任何位置,并让您的初始化代码调用java.security.Security.insertProviderAt(新的org.bouncycastle.jce.provider.BouncyCastleProvider(),位置);

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

//nopackage DThompson 2012.08.13bimport java.net.InetSocketAddress;import java.net.Socket;import javax.net.ssl.SSLSocket;import javax.net.ssl.SSLSocketFactory;public class JustBConnectSSL {        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->



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/451587.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号