jdk版本导致的调用https的SSLV3协议错误
2016-08-20 00:00
274 查看
在调试接口过程中,发现本地调试一直正常,但服务器一直报
“Server chose SSLv3, but that protocol version is not enabled or not supported by the client.”
去网上查了下,说linux要开启SSL v3。咨询了下运维,给我的答复是,https的URL可以在服务器上访问。
在这个过程中我看了下服务器的jdk版本和我本地运行的jdk版本不一致,网上看了下这两个版本的区别,发现本地的jdk默认开启了SSLV3,而服务器上jdk版本是关闭的。
然后去问了客户给的https支持的协议,说是支持SSLV3,不支持SSLV2及其他。
因为所有客户都是http协议访问,所以让客户把https协议改成了http协议。就没再开启服务器jdk sslv3
下面给出代码实现
“Server chose SSLv3, but that protocol version is not enabled or not supported by the client.”
去网上查了下,说linux要开启SSL v3。咨询了下运维,给我的答复是,https的URL可以在服务器上访问。
在这个过程中我看了下服务器的jdk版本和我本地运行的jdk版本不一致,网上看了下这两个版本的区别,发现本地的jdk默认开启了SSLV3,而服务器上jdk版本是关闭的。
然后去问了客户给的https支持的协议,说是支持SSLV3,不支持SSLV2及其他。
因为所有客户都是http协议访问,所以让客户把https协议改成了http协议。就没再开启服务器jdk sslv3
下面给出代码实现
public static String httpPost(String url, String json,Map<String,String> headerMap) throws Exception { String res = null; // 将JSON进行UTF-8编码,以便传输中文 //String encoderJson = URLEncoder.encode(json,"UTF-8"); final CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); httpPost.addHeader(HTTP.CONTENT_TYPE, HttpUtils.APPLICATION_JSON); RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(3000).setConnectTimeout(3000).build();//设置请求和传输超时时间 httpPost.setConfig(requestConfig); if(headerMap!=null){ for(String key:headerMap.keySet()){ httpPost.addHeader(key, headerMap.get(key)); } } StringEntity entity = new StringEntity(json,"UTF-8"); entity.setContentType(CONTENT_TYPE_TEXT_JSON); entity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, APPLICATION_JSON)); httpPost.setEntity(entity); logger.info("发送的报文:"+json); HttpResponse response = httpClient.execute(httpPost); int statusCode = response.getStatusLine().getStatusCode(); logger.info(statusCode); if (HttpStatus.SC_OK == statusCode) { HttpEntity httpEntity = response.getEntity(); res = EntityUtils.toString(httpEntity, "UTF-8"); logger.info("接收的报文:"+res); } httpClient.close(); return res; }
相关文章推荐
- 由于JDK版本问题导致的错误
- https调用出现【基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系】错误
- JDK版本导致的J2EE deploytools 部署错误
- JDK版本不同导致的运行时错误
- 菜鸟调错(三)——Jboss与jdk版本不兼容导致WebService调用出错
- java/jdk版本不对导致android编译错误
- 解决Java调用https服务证书错误javax.net.ssl.SSLHandshakeException
- 用httpWebRequest调用https开头的php webservice,报“基础连接已经关闭: 未能为SSL/TLS 安全通道建立信任关系”错误的解决方法
- centos6.5 openjdk https/ssl兼容性错误ECKeyPairGenerator.generateKeyPair
- Java调用使用SSL/HTTPS协议来传输的axis webservice服务
- eclipse 项目jdk版本不一致导致的错误 Description Resource Path Location Type Target runtime com.genui
- Spring Cloud配置为https协议后,FeignClient调用Eureka Client接口时报证书错误的问题
- Idea 中JDK版本设置问题导致ClassNotFoundException错误的一种原因
- jdk高版本编译低版本jar导致的运行错误.md
- 菜鸟调错(三)——Jboss与jdk版本不兼容导致WebService调用出错
- JDK版本不同导致的运行时错误
- Java调用使用SSL/HTTPS协议来传输的axis webservice服务
- 问题007:JDK版本与JRE版本不同导致java.exe执行类文件错误 java.lang.UnsupportedClassVersionError错误
- Unsupported major.minor version 49.0的错误(JDK 编译与运行 版本不匹配)
- c#如何调用SSl(https)加密的java写的Web Service