[英]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
已經被調用。
正確的呼叫順序是:
socket
bind
listen
accept
SSL_new
SSL_set_fd
SSL_accept
從https://www.openssl.org/source/下載openssl來源,並查看demos / ssl / serv.cpp。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.