首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSL_read第二次失败

SSL_read第二次失败
EN

Stack Overflow用户
提问于 2012-07-03 05:43:30
回答 1查看 776关注 0票数 0

我有一个使用ssl的openssl客户端。客户端之前正在与openssl服务器对话,一切都很好。我们现在正在用java重写服务器,我们看到了下面的情况。

1)连接到服务器工作

2)握手有效

3)第一个请求工作

4)第一个响应工作

5)第二个请求有效

6)第二次响应失败

7)第三个请求工作

8)第三次响应失败

第二个响应大约是130个字节的加密和(应该)大约100个字节的未加密。客户端成功地从tcp套接字中读取了所有这130个字节,但是在将其抛出SSL_read (类似于第一个响应)之后,它只输出了1个字节。调用SSL_get_error...just成功返回1字节后无错误。之后我直接调用SSL_pending,它返回0。

第三个响应现在返回-1 \f25 SSL_ERROR_SSL -1\f6 "decryption failed or bad record mac“

我是openssl的新手,我已经和这个问题斗争了好几个小时了。任何想法都将不胜感激。

更新:相关代码

代码语言:javascript
复制
...
BIO* bio = BIO_new_mem_buff(sbuf, bufoutlen);
BIO_set_mem_close(bio,BIO_NOCLOSE);
ssl->rbio=bio;
int len = SSL_read(ssl, bufout, sbuflen); //<<return 1 even though buf has 130bytes
printf("pending=%d\n",SSL_pending(ssl)); //<<returns 0
EN

回答 1

Stack Overflow用户

发布于 2012-07-03 07:37:08

你所依赖的东西是你不能依赖的。Java可能会以不同的方式将响应缓冲到其SSL层中,这将导致接收不同长度的SSL消息。您不能依赖任何通过SSL或TCP读取的长度,它们都是字节流协议,对于SSL,至少在API级别上是这样的。你必须循环阅读,直到你有了你需要的一切。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11301614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档