您的位置:首页 > 理论基础 > 计算机网络

记录一次https的调试

2017-06-21 11:52 183 查看
前言:最近公司b2b,b2c生产环境更换了http协议为https,随之而来就是所有内外部通讯通知,都要更换,所以有了这次https的调试。

注释:这里面Java https发送的代码就不展示了,网上也可以找到很多,如果有需要我可以后续粘贴出来。

第一次调试
语言:Java
环境:JDK1.7


启动服务,第一次发送带参数的POST的HTTPS 请求。



问题:提示SSLv3协议错误,服务器选择sslv3但是本地环境不支持。

为啥不支持SSLv3协议?这里我搜索了下相关问题。原来是SSLv3有安全漏洞,JDK1.7以后已经把SSLv3默认禁止了。

但是此时,我需要使用到SSLv3在已有的环境中怎么办?更换JDK试试?于是有了第二次调试。

第二次调试
语言:Java
环境:JDK1.6


因为项目是以JDK1.7环境开发的所以更换为1.6以后项目很多报错,所以只能以main函数的方式进行测试。

结果为通讯正常。终于通了,验证了这个问题。

**1.JDK1.6 SSLv3协议可以使用。

2.JDK1.7 因为安全问题应该是禁止或是移除了SSLv3协议。**

这样就有了眉目,如果JDK1.7是禁止了协议,应该会有方法找回来,如果是移除掉了就不好办了。

第三次调试
语言:Java
环境:JDK1.7


鉴于前两次的调试,有了些解决的思路。既然是安全问题使JDK1.6以后不能再使用SSLc3协议,那我就去看看JDK1.7的安全配置文件有没有线索。\jre\lib\security\java.security

打开java.security 文件,试着搜索一下SSLv3,结果查找出一条这样的信息。

jdk.tls.disabledAlgorithms=SSLv3


disabled禁止了SSLv3协议,尝试注掉这行配置。

#jdk.tls.disabledAlgorithms=SSLv3


再次运行,成功运行!这次https的调试终于暂时结束了。

ps:jdk里面会有两个文件夹jre的,以jdk1.7 为例,里面就有jre 和 jre7,修改配置文件只需要修改jre中的java.security 文件就可以。还有注掉这行配置可能有安全问题的隐患,我的这次调试只是有一个解决这个问题的思路。希望能有个更好的解决这个问题的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java SSLv3 http协议 jdk