相关疑难解决方法(0)

OpenSSL错误处理

这是在OpenSSL中进行错误处理的正确方法吗?和之间有什么区别SSL_get_errorERR_get_error?在这方面,文件非常模糊.

int ssl_shutdown(SSL *ssl_connection)
{
    int rv, err;
    ERR_clear_error();
    rv = SSL_shutdown(ssl_connection);

    if (rv == 0)
        SSL_shutdown(ssl_connection);

    if (rv < 0)
    {
        err = SSL_get_error(ssl_connection, rv);

        if (err == SSL_ERROR_SSL)
            fprintf(stderr, "%s\n", ERR_error_string(ERR_get_error(), NULL));

        fprintf(stderr, "%s\n", SSL_state_string(ssl_connection));

        return 1;
    }

    SSL_free(ssl_connection);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c error-handling openssl

6
推荐指数
2
解决办法
9882
查看次数

OpenSSL ssl_accept()错误5

我已经搜索了Stack Overflow和互联网,但是我无法找到为什么ssl_accept()不断返回的答案:

[DEBUG] SSL_accept() : Failed with return 0
[DEBUG]     SSL_get_error() returned : 5
[DEBUG]     Error string : error:00000005:lib(0):func(0):DH lib
[DEBUG]     WSAGetLastError() returned : 0
[DEBUG]     GetLastError() returned : 0
[DEBUG]     ERR_get_error() returned : 0
Run Code Online (Sandbox Code Playgroud)

编辑:出于兴趣,ssl_accept()返回0,定义为(相应于缺乏和无用的OpenSSL文档):"TLS/SSL握手未成功但被关闭控制并受到TLS/SSL协议规范的控制. SSL_get_error()返回值为ret,找出原因."

下面是服务器端的片段,我可能会咆哮错误的树,这个问题是由客户端代码引起的吗?

    client = accept( server, (sockaddr*) &clientsockaddrin, &len );

    SSL* ssl = SSL_new( ctx );

    SSL_set_fd( ssl, client );

    std::cout << "+--------------------------------------------------+"
              << std::endl;

    int r = SSL_accept( ssl );

    if ( r != 1 ) 
    {
        int err_SSL_get_error = SSL_get_error( ssl, r); …
Run Code Online (Sandbox Code Playgroud)

c++ encryption openssl

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

openssl ×2

c ×1

c++ ×1

encryption ×1

error-handling ×1