当前位置:  技术问答>linux和unix

SSL 连接偶尔会失败

    来源: 互联网  发布时间:2016-12-27

    本文导语:  本人最近在做SSL方面的开发和测试。遇到一些棘手的问题,希望高手们能帮助。 我客户端,做好SSL初始化,参数设置等一系列工作后,调用SSL_connect() 偶尔会出现失败的情况 【注:大概30-40次 出现一次,有时候接...

本人最近在做SSL方面的开发和测试。遇到一些棘手的问题,希望高手们能帮助。

我客户端,做好SSL初始化,参数设置等一系列工作后,调用SSL_connect() 偶尔会出现失败的情况
【注:大概30-40次 出现一次,有时候接连出现2-3次】。
查找errno 返回值是235, SSL中定义为SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER-尝试使用不支持的加密方式。

1. SSL_connect 即客户端和服务器进行握手,使用何种加密方式是由服务器决定吗?不明白为什么偶尔失败。失败的原因是什么

由于本人做的是类似嵌入式的工作,SSL已经是做好的lib,有些底层的函数我都无法使用,一些调试状态我也无法跟踪。


2.在使用SSL_connect 之后我还使用 Post Connection Check (调用SSL_get_peer_certificate)检查PEER CERTIFICATE。(网上讲这个并不是必须的)
有时候即使SSL_connect失败了,该检查依然可以通过,



以下是能抓到的一点SSL State
Socket connect is successful returned: 0 errno: 2
SL_set_fd inResult: 1
info: SSL 7045A154 10 1 SSL->state 5000
info: SSL 7045A154 1001 1 SSL->state 5000
info: SSL 7045A154 1001 1 SSL->state 1210
info: SSL 7045A154 1001 1 SSL->state 1120
info: SSL 7045A154 1001 1 SSL->state 1130
info: SSL 7045A154 1001 1 SSL->state 1160
info: SSL 7045A154 1001 1 SSL->state 1180
info: SSL 7045A154 1001 1 SSL->state 11A0
info: SSL 7045A154 1001 1 SSL->state 11B0
info: SSL 7045A154 1001 1 SSL->state 1100
info: SSL 7045A154 1002 -1 SSL->state 11D0
info: SSL 7045A154 1002 -1 SSL->state 11D0
SSL_connect inResult: -1 errno: 235
SSL connection using AES256-SHA

info: 信息都是通过infocallback 函数来实现的。
SSL->state在SSL定义中

#define SSL_ST_CONNECT 0x1000
#define SSL_ST_ACCEPT 0x2000
#define SSL_ST_MASK 0x0FFF
#define SSL_ST_INIT (SSL_ST_CONNECT|SSL_ST_ACCEPT)
#define SSL_ST_BEFORE 0x4000
#define SSL_ST_OK 0x03
#define SSL_ST_RENEGOTIATE (0x04|SSL_ST_INIT)

#define SSL_CB_LOOP 0x01
#define SSL_CB_EXIT 0x02
#define SSL_CB_READ 0x04
#define SSL_CB_WRITE 0x08
#define SSL_CB_ALERT 0x4000 /* used in callback */
#define SSL_CB_READ_ALERT (SSL_CB_ALERT|SSL_CB_READ)
#define SSL_CB_WRITE_ALERT (SSL_CB_ALERT|SSL_CB_WRITE)
#define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT|SSL_CB_LOOP)
#define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT|SSL_CB_EXIT)
#define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT|SSL_CB_LOOP)
#define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT|SSL_CB_EXIT)
#define SSL_CB_HANDSHAKE_START 0x10
#define SSL_CB_HANDSHAKE_DONE 0x20

但是还是计算不出是哪个states

最后一句 SSL connection using AES256-SHA 是使用SSL_get_cipher来查看当前使用的cipher,有时候连接失败了返回值是NONE,但是有的时候失败了,返回值竟然还是AES256-SHA。 

|
你测试的时候网络环境怎么样?
如果是偶尔测一次,你可以在败时在来一次或许可以解决?

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.net.ssl接口handshakecompletedlistener的类成员方法: handshakecompleted定义及介绍
  • SSL VPN解决方案 SSL-Explorer
  • java命名空间javax.net.ssl类sslcontext的类成员方法: getclientsessioncontext定义及介绍
  • windows服务器中检测PHP SSL是否开启以及开启SSL的方法
  • java命名空间javax.net.ssl类sslcontext的类成员方法: getserversessioncontext定义及介绍
  • Linux下怎样配置SSL的Apache服务器
  • java命名空间javax.net.ssl类sslprotocolexception的类成员方法: sslprotocolexception定义及介绍
  • ssl与ssh的区别
  • java命名空间javax.rmi.ssl类sslrmiserversocketfactory的类成员方法: sslrmiserversocketfactory定义及介绍
  • 有谁做关ssl方面的东西,高分想送(分可以加到300)
  • java命名空间javax.net.ssl类sslserversocket的类成员方法: getuseclientmode定义及介绍
  • 请问我要用SSL,在JSP中验证用户时需要怎么作??
  • java命名空间javax.net.ssl类sslserversocket的类成员方法: setuseclientmode定义及介绍
  • TLS/SSL服务软件 stunnel
  • java命名空间javax.net.ssl类sslsocket的类成员方法: getsupportedprotocols定义及介绍
  • SSL:前辈们帮忙哦~~
  • java命名空间javax.net.ssl类sslcontext的类成员方法: getdefaultsslparameters定义及介绍
  • 关于mail服务中ssl的问题
  • java命名空间javax.net.ssl类sslpeerunverifiedexception的类成员方法: sslpeerunverifiedexception定义及介绍
  • Linux下的内核SSL如何实现
  • java命名空间javax.net.ssl类sslcontext的类成员方法: getsupportedsslparameters定义及介绍
  • openssl/ssl.h


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3