Pitaya486 2023-02-28 09:20 采纳率: 44.4%
浏览 184
已结题

C语言用openssl出现报错:SSL connection failed:sslv3 alert handshake failure

我是一个学生,对于openssl使用熟练程度很低,在使用ssl协议建立连接时出现了这种报错:SSL connection failed:sslv3 alert handshake failure,上百度查了很多东西,思考了一天,也还是不能解决这个问题,下面是c语言初始化ssl的过程:

//初始化SSL接口
int init_SSL(int tcp_fd, SSL **ssl, SSL_CTX **ctx)
{
    int n, ret;
    /* 初始化https的SSL加密协议 */
    //加载错误字符串资源
    SSL_load_error_strings();
    //初始化SSL库
    SSL_library_init();
    //新建SSL会话
    *ctx = SSL_CTX_new(SSLv23_client_method());
    if (*ctx == NULL)
    {
        fprintf(stderr, "init SSL CTX failed:%s\n",
                ERR_reason_error_string(ERR_get_error()));
        return -1;    
    }

    //根据会话新建SSL加密
    *ssl = SSL_new(*ctx);
    if (*ssl == NULL)
    {
        fprintf(stderr, "new SSL with created CTX failed:%s\n",
                ERR_reason_error_string(ERR_get_error()));
        return -1;
    }

    //绑定文件描述符,tcp_fd是连接完服务器的文件描述符
    ret = SSL_set_fd(*ssl, tcp_fd);
    if (ret == 0)
    {
        fprintf(stderr, "add SSL to tcp socket failed:%s\n",
                ERR_reason_error_string(ERR_get_error()));
        return -1;    
    }
        //错误出现在这里的,和目标服务器已经建立tcp连接了,但是ssl不行
    /* 利用SSL加密连接服务器 */
    ret = SSL_connect(*ssl);
    if (ret != 1)
    {
        fprintf(stderr, "SSL connection failed:%s\n",
                ERR_reason_error_string(ERR_get_error()));
        return -1;    
    }

    return 0;
}

注:linux上命令行get请求访问该api没有什么问题(有返回的json代码),这部分代码访问其他的api建立ssl也没有问题。
系统:ubuntu16.04
openssl version : OpenSSL 1.1.1s 1 Nov 2022
希望你们可以帮我解决问题,我将不胜感激!

  • 写回答

7条回答 默认 最新

  • 耿鹏也能重名 2023-02-28 09:43
    关注

    这个错误表示SSL连接失败,因为客户端和服务器之间的协商失败了。通常可能是由于客户端和服务器之间的TLS版本不一致,或者服务器上的SSL证书不可信,或者服务器上的SSL证书已过期导致的。

    要解决这个问题,可以尝试以下操作:

    1.确保客户端和服务器之间使用的TLS版本是一致的。

    2.检查服务器上的SSL证书是否有效,并确保其未过期。

    3.尝试使用不同的SSL协议,比如TLS 1.1或1.2。

    4.如果以上这些都无济于事,可以尝试重新安装服务器上的SSL证书。

    评论

报告相同问题?

问题事件

  • 系统已结题 3月8日
  • 赞助了问题酬金20元 2月28日
  • 修改了问题 2月28日
  • 修改了问题 2月28日
  • 展开全部

悬赏问题

  • ¥15 求TYPCE母转母转接头24PIN线路板图
  • ¥100 国外网络搭建,有偿交流
  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型