簡體   English   中英

SSL_accept()不起作用

[英]SSL_accept() Not Working

我已經研究了一段時間,在任何地方都沒有看到我完全相同的問題。 我只是遇到一個特定的,非常簡單的問題:每當我的echo_server嘗試運行SSL_accept()函數時,它都不會阻止服務器等待客戶端連接,該函數只會返回0,如果我進入SSL_get_error() ,它會給我SSL_ERROR_SYSCALL ,所以我猜是問題出在手冊中,“觀察到一個EOF違反了協議”。

真相是我不知道這意味着什么,而且它真的令人沮喪,因為我認為我錯過了一些非常簡單的東西,但我不知道這是什么。

這是我的accept函數的代碼(之前已初始化SSL_ctx並打開了套接字):

SSL * sslconnection;

if((sslconnection = SSL_new(ctx)) == NULL){
    return NULL;
}

if(SSL_set_fd(sslconnection, socketd) != 1){
    return NULL;
}

if(SSL_accept(sslconnection) != 1){
    return NULL;
}

return sslconnection;

另外,我嘗試用“ openssl verify -verbose -purpose sslserver -CAfile'CACertificate''ServerCertificate'”檢查我的證書,但它表示我的服務器證書還可以。

歡迎任何幫助,在此先感謝。 希望這真的很愚蠢,我太困惑了,我看不到它。

每當我的echo_server嘗試運行SSL_accept()函數時,它都不會阻止服務器等待客戶端連接

SSL_accept不會為您調用accept 它期望accept已經被調用。

正確的呼叫順序是:

  1. socket
  2. bind
  3. listen
  4. accept
  5. SSL_new
  6. SSL_set_fd
  7. SSL_accept

https://www.openssl.org/source/下載openssl來源,並查看demos / ssl / serv.cpp。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM