havequestion_个人页

个人头像照片 havequestion
0
2
0

个人介绍

暂无个人介绍

擅长的技术

获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
  • 提交了问题 2016-04-21

    handshakefailure错误的原因及如何解决

暂无更多信息
正在加载, 请稍后...
暂无更多信息
  • 回答了问题 2016-04-22

    handshakefailure错误的原因及如何解决

    Rehandshakefailure错误的原因及如何解决 我是用的服务器是阿里云服务器,不知道在服务器上需要做什么特殊设定吗? ------------------------- Rehandshakefailure错误的原因及如何解决 后续进展: 我已经在自己服务器,配好了从globalsign拿到的证书, 自己的web应用已经可以走https访问了, 但是调钉钉api的时候,还是一样的错误。 ------------------------- 回 8楼君信的帖子 不好意思,各位,休假刚回来。 问题没有解决,还得继续问啊。 >你说的本地跑,和在钉钉里面作为微应用跑是什么意思?你是在微应用里面直接请求的oapi.dingtalk.com/gettoken吗 在本地跑的意思是:在自己机器上,启动Tomcat,里面运行我的Web应用后,然后通过浏览器来请求这个URL, 在这个URL相对应的Java Controller里面,我要使用代码(Apache HttpClient)来调, 在这种情况下,是可以取到access_token的。 在钉钉里面作为微应用跑是什么意思:之后,我把我的Web应用部署到阿里云服务器上, 无论是通过浏览器直接请求这个URL, 还是把这个URL设置到钉钉的微应用里来启动,都会报handshake_failure的错误。 ------------------------- 回 10楼z豹的帖子 多谢提示。 我试了一下,还是会出一样的问题。没有解决。 不知是不是我调用的问题。 代码如下:     HttpsURLConnection.setDefaultHostnameVerifier(new javax.net.ssl.HostnameVerifier() {        public boolean verify(String hostname, javax.net.ssl.SSLSession sslSession) {           return true;        }    });    HttpResponse response = null;    CloseableHttpClient httpClient = HttpClients.createDefault();    // 建立连接    List parameters = new ArrayList();    parameters.add(new BasicNameValuePair('corpid', 'XXXXXX'));    parameters.add(new BasicNameValuePair('corpsecret', 'XXXXXX'));    String query = URLEncodedUtils.format(parameters, 'UTF-8');    HttpGet getRequest = new HttpGet('Https://oapi.dingtalk.com/gettoken?' + query);    // POST请求请在HTTP Header中设置 Content-Type:application/json,否则接口调用失败    getRequest.addHeader('Content-type', 'application/json');    logger.info('url=' + getRequest.getURI().toString());    response = httpClient.execute(getRequest);// 跑到这里报错了。 还望提示。 ------------------------- Rehandshakefailure错误的原因及如何解决 今天查来查去总算把问题解决了。 出现这个错误的原因是,我从服务器请求是,默认的SSL协议版本和钉钉服务器端可以接受的SSL协议版本对不上,导致的。 请求之前,加一段下面的代码,就OK了。 另,感谢大家的帮助。         TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {            public java.security.cert.X509Certificate[] getAcceptedIssuers() {                return null;            }            public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {            }            public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {            }        } };        // 'TLSv1.2'不正确的话,会出现'Received fatal alert: handshake_failure'异常        // Ref:logback.qos.ch/manual/usingSSL_ja.html        SSLContext sc = SSLContext.getInstance('TLSv1.2');        sc.init(null, trustAllCerts, new java.security.SecureRandom());        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sc);        CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslsf).build();        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
    踩0 评论0
  • 提交了问题 2016-04-21

    handshakefailure错误的原因及如何解决

正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息