TSL协议升级导致的问题:caught when processing request: Received fatal alert: protocol_version
近日,公司升级TSL协议,禁用TSL1.0,导致原本好好的https接口,报以下错误:
2019-03-05 15:43:29 [org.apache.commons.httpclient.HttpMethodDirector]-[INFO] - I/O exception (javax.net.ssl.SSLException) caught when processing request: Received fatal alert: protocol_version

解决方案:
把原来TSLv1.0协议升级成1.1 or1.2即可。
SSLContext sslContext = SSLContexts.custom().useTLS().build();
SSLConnectionSocketFactory f = new SSLConnectionSocketFactory(sslContext, new String[] { "TLSv1.2" }, null,
null);
CloseableHttpClient client = HttpClients.custom().setSSLSocketFactory(f).build();
直接贴修改前后的代码:
原始使用的HttpClient版本叫老,默认1.0,且没有重新设置TSL协议版本的地方;为了升级,使用CloseableHttpClient ,且引入SSLContext 。
修改前:
public static String postJosnOld(String url,String jsonString) throws Exception{
HttpClient client = new HttpClient();
PostMethod myPost = new PostMethod(url);
//设置请求超时时间 15秒
client.getHttpConnectionManager().getParams().setConnectionTimeout(15000);
String responseString = null;
//设置请求头部类型
myPost.setRequestHeader("Content-Type","application/json;charset=utf-8");
myPost.setRequestHeader("charset","utf-8");
myPost.setRequestEntity(new StringRequestEntity(jsonString,"text/json","utf-8"));
int statusCode = client.executeMethod(myPost);
if(statusCode == HttpStatus.SC_OK){
BufferedInputStream bis = new BufferedInputStream(myPost.getResponseBodyAsStream());
byte[] bytes = new byte[1024];
ByteArrayOutputStream bos = new ByteArrayOutputStream();
int count = 0;
while((count = bis.read(bytes))!= -1){
bos.write(bytes, 0, count);
}
byte[] strByte = bos.toByteArray();
responseString = new String(strByte,0,strByte.length,"utf-8");
bos.close();
bis.close();
}
myPost.releaseConnection();
return responseString;
}
修改后:
public static String postJosn(String url, String jsonString) throws Exception {
SSLContext sslContext = SSLContexts.custom().useTLS().build();
SSLConnectionSocketFactory f = new SSLConnectionSocketFactory(sslContext, new String[] { "TLSv1.2" }, null,
null);
CloseableHttpClient client = HttpClients.custom().setSSLSocketFactory(f).build();
HttpPost myPost = new HttpPost(url);
myPost.setHeader(HTTP.CONTENT_TYPE, "application/json;charset=utf-8");
myPost.setHeader("charset", "utf-8");
StringEntity s = new StringEntity(jsonString, "utf-8");
s.setContentEncoding("UTF-8");
s.setContentType("application/json;charset=utf-8");
myPost.addHeader("Content-Type", "application/json;charset=utf-8");
myPost.setEntity(s);
HttpResponse res = client.execute(myPost);
HttpEntity entity = res.getEntity();
myPost.releaseConnection();
return EntityUtils.toString(entity, "utf-8");
}
TSL协议升级导致的问题:caught when processing request: Received fatal alert: protocol_version的更多相关文章
- HttpClient I/O exception (java.net.SocketException) caught when processing request: Connect
转自:http://luan.iteye.com/blog/1820054 I/O exception (java.net.SocketException) caught when processin ...
- I/O exception (java.net.SocketException) caught when processing request: Connect
Exception [一个故障引发的话题] 最近,项目中的短信模块收到一个故障日志,要求我协助调查一下: 2010-05-07 09:22:07,221 [?:?] INFO httpclient. ...
- Connection reset问题,INFO: I/O exception (java.net.SocketException) caught when processing reques
困扰我多年的Connection reset问题 第一次出现:是thrift的python client去请求server,发现偶尔出现这个问题 第二次:接入第三方的api,去请求数据时,发现一个接入 ...
- 【网络与系统安全】关于SSL/TSL协议的分析
前言 TSL协议的前身是由网景(Netscape)公司于1994年研发的安全套接字(Secure Socket Layer)协议.它建立在TCP协议栈的传输层,用于保护面向连接的TCP通信.实际TSL ...
- python升级导致的坑
问题来源 问题往往都是这样来的突然,让我措手不及. 小孩没娘说来话长啊,操作系统是centos6.5因此默认自带的python是2.6.6的,突然有一天我要写一个关于kafka topic消费情况的监 ...
- 【经验随笔】MYSQL表加锁升级导致数据库访问失败
背景:有一次定位问题发现,在同一个session连接中对MYSQL部分表加锁,导致其它未加锁的表不能访问. 用Spring管理MYSQL数据连接,在多线程访问数据库的情况下容易出问题.一个线程中对部分 ...
- Linux内核升级导致无法启动,Kernel panic - not syncing Unable to mount root fs on unknown block(0,0)
问题原因:内核的某次升级,导致系统无法启动. 首先进入recovery模式:引导界面选择-->Ubuntu高级-->出现的选项中选择能够启动的recovery模式(几个内核版本分别试一下) ...
- [转载] PHP升级导致系统负载过高问题分析
原文:http://chuansongme.com/n/797172 背景 据XX部门兄弟反应, 其在将PHP从5.3.8 升级到5.5.13 时, 开始运行正常, 运行一段时间后, 系统负载变高,达 ...
- 分析 PHP升级导致系统负载过高问题(转载)
原文:http://chuansongme.com/n/797172 背景 据XX部门兄弟反应, 其在将PHP从5.3.8 升级到5.5.13 时, 开始运行正常, 运行一段时间后, 系统负载变高,达 ...
随机推荐
- 为Eclipse安装功能扩展插件
---------siwuxie095 关于 Eclipse 的下载.安装与配置,详见本人博客分类:利剑出鞘, 里面的 Eclipse的配置 本人博客( ...
- set 续2
--------siwuxie095 用 set 命令进行字符串处理(这个不应只属于 set 的内容,应该归属于格式内容, 在没有 set 的情况下,格式仍旧适用) ...
- 5- 如何把MyEclipse中的web项目导入到Eclipse中运行
from: 如何把MyEclipse中的web项目导入到Eclipse中运行 2016年09月12日 20:57:51 dancheren 阅读数:35329 标签: eclipse 更多 个人分类: ...
- 5-math中函数汇总
math.h 数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体有:1 三角函数double sin (double);double cos (double);double tan ( ...
- cmake get_filename_component
get_filename_component Get a specific component of a full filename. get_filename_component(<VAR&g ...
- 没有Home键之后的iPhone会是什么样子?
以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 之前笔者推测新一代的iPhone不会再有“Home”键.果不其然,9月13日苹果发布会证实了笔者的观 ...
- mdk3攻击实例
Authentication Flood,mdk3下参数为a: mdk3 mon0 a –a AP的MAC地址(BSSID) -c来对指定的频道进行攻击 -a固定bssid进行攻击 -s控制发包速率. ...
- 加载 bean*.xml
入口 ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:bean*.xml"); /** ...
- Java: FreeMarker的配置和使用
初学什么都不可以忽略的地方就是这个东西的官方网站:http://freemarker.org/.下载或者API都可以参考这里. FreeMarker是什么 非常的简单明了.FreeMarker是一个j ...
- 初识Java微信公众号开发
选定类型后不可更改 企业号与服务号,订阅号的区别 公众号微信注册流程: 个人就选择订阅号 外网映射 必须要使用映射工具将本地的地址映射到公网上去 介绍一个ngrok 首先下载ngork,例如保存在D盘 ...