如何处理OpenSSL的SSL

 我来答
huanglenzhi
2015-05-07 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117525 获赞数:517223
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
你读了OpenSSL的文档 ssl_read 和 ssl_get_error 了吗?
ssl_read:
如果基础生物阻塞,
SSL_read()将只返回,一旦
读操作已完成或
发生错误,除了当
重新谈判发生,其中
区分可能发生SSL_ERROR_WANT_READ.
这种行为可以被控制
的的SSL_MODE_AUTO_RETRY标志
SSL_CTX_set_mode(3)调用.
如果底层BIO是非阻塞的,
SSL_read()也将返回当
底层的生物不能满足
SSL_read的需要()以继续
操作.在这种情况下的呼叫
SSL_get_error(3)的返回值
SSL_read的()将产生
SSL_ERROR_WANT_READ或
SSL_ERROR_WANT_WRITE.如在任何时间
重新谈判是可能的,调用
SSL_read()也可引起写
操作!调用进程然后
必须服用后重复调用
适当的行动,以满足
SSL_read的需要().动作
依赖于底层生物上.何时
使用非阻塞套接字,什么都没有
是必须要做的,但select()可以
用于检查所需
条件.
ssl_get_error:
SSL_ERROR_WANT_READ,SSL_ERROR_WANT_WRITE
该操作没有完成;该
同样的TLS / SSL的I / O功能应该是
以后再次调用.如果,届时,
底层的生物有数据可供
读数(如果结果代码是
SSL_ERROR_WANT_READ)或允许写入
数据(SSL_ERROR_WANT_WRITE),然后一些
TLS / SSL协议的进展将采取
的地方,即,至少一部分的TLS / SSL的
记录将被读取或写入.注
该重试可能会再次导致
SSL_ERROR_WANT_READ或SSL_ERROR_WANT_WRITE
条件.没有固定的上限
对于迭代的次数,可能
是必要的,直到变成进度
在应用协议层面可见.
对于插座的BIOS(例如,当SSL_set_fd()
用),在select()或poll()
底层套接字可以用来找到
出来的时候,TLS / SSL的I / O功能
应该重试.
警告:任何TLS / SSL的I / O功能可
导致任何SSL_ERROR_WANT_READ的
和SSL_ERROR_WANT_WRITE.特别地,
SSL_read()或SSL_peek()可能要
写数据和SSL_write()可能要
读取数据.这主要是因为
可能发生在任何的TLS / SSL握手
该协议(由发起时的时间
在客户端或服务器);
SSL_read(),SSL_peek()和SSL_write()
将处理任何未决的握手.
OpenSSL的是作为一个状态机.

SSL_ERROR_WANT_READ

意味着更多的入站数据,并

SSL_ERROR_WANT_WRITE

意味着更多的出站数据,是必要的,以便使正向连接上的进步.如果你得到

SSL_ERROR_WANT_WRITE

上ssl_read()操作,你需要发送出站数据,或者至少等待套接字成为可写的.如果你得到

SSL_ERROR_WANT_READ

上ssl_write()操作,你需要阅读的入站数据.
你应该订阅 OpenSSL mailing lists .这个问题被问了很多.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式