我有一个openssl客户端说话ssl。客户以前曾经与openssl服务器交谈过,一切都很好,很花哨。我们现在用java重写服务器,我们看到下面的情况。SSL_read第二次失败
1)连接到服务器WORKS
2)握手WORKS
3)第一请求WORKS
4)第一响应WORKS
5)第二请求WORKS
6 )第二回应失败
7)第三次要求EST WORKS
8)第三响应失败
的第二响应是有关加密130bytes和(应该是)周围100字节加密。客户端成功读取了tcp套接字中的所有130个字节,但在将SSL_read(如第1个响应)扔出后,它仅输出1个字节。调用SSL_get_error后没有错误...只有1个字节被成功返回。我叫SSL_pending直接事后并返回0
第三响应现在返回-1 SSL_ERROR_SSL“解密失败或不良记录MAC”
我是全新的,以OpenSSL和我一直都争夺这个问题了几个小时现在。任何想法,将不胜感激
UPDATE:相关代码
...
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
我很清楚数据包的碎片,这不是它。 –
@justonemailjustonemail我没有说任何关于数据包碎片的事情。考虑到你提出这个问题,你无法确定什么是,哪些不是答案。这是你的代码不起作用,不是我的。 – EJP