No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

这两天搭建完博客之后,想着丰富一下博客内容,于是乎想到转载网上牛人博客,之前也有过类似需求,说干就干,不一会就搭建好了环境,准备动手大干一场。

阮一峰老师的网络日志博文质量上乘,准备借鉴一下(当然大家在转载他人博文时需要遵守博主转载要求),然而事情总是没有那么顺利,

在输入: https://www.ruanyifeng.com/xxxx/xxxx 网址后,出现了尴尬的问题:

毕竟干过几年Java ,这一看就知道是 https 协议的问题,并且是传输层加密问题,转载事业不容停歇,怎么办呢,既然是https问题,那我们就访问 http, 嘿嘿,果然有效果。

这种投机取巧的技巧并没有正真解决问题,作为大龄青年,必须正面硬刚,上网搜索了大量资料,了解了 HTTPS 与 HTTP 的区别以及运行机制,基本了解了问题产生的原因以及相应的解决方案,这里直接给出处理方案,我这里使用的是 apache http 工具,需要修改 

SSLConnectionSocketFactory 创建逻辑,如下所示:
private SSLConnectionSocketFactory buildSSLConnectionSocketFactory() {
        try {
            /// 这里添加 TLS 支持的加密协议 "SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"
            return new SSLConnectionSocketFactory(createIgnoreVerifySSL(), new String[]{"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"}, null, new DefaultHostnameVerifier());
        } catch (KeyManagementException e) {
            logger.error("ssl connection fail", e);
        } catch (NoSuchAlgorithmException e) {
            logger.error("ssl connection fail", e);
        }
        return SSLConnectionSocketFactory.getSocketFactory();
    }

产生上面问题的主要原因是 Oracle Java JDK 在版本迭代的时候考虑到安全问题,会禁用一些加密协议,具体可以在 $JAVA_HOME/jre/lib/security/java.security 中的 jdk.tls.disabledAlgorithms 查看禁用的协议,你可以修改,但是不建议,毕竟JDK 发布方也是经过深思熟虑的。当然我直接注释了该内容。

原文链接

联系方式

技术更新换代速度很快,我们无法在有限时间掌握全部知识,但我们可以在他人的基础上进行快速学习,学习也是枯燥无味的,加入我们学习牛人经验:

点击:加群讨论 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值