我有一個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