首页 > 解决方案 > tls_read 上的 SSL_error_SSL 错误

问题描述

在生产设置中,随机出现一个 opensips 错误,指示 tls_read 由于 SSL_error_SSL 错误而失败。

Opensips 使 tls/tcp 会话失败,并创建了一个新会话并且它工作正常。

请提供有关为什么 tls_read 会因 ssl_error_ssl 返回码而失败的任何指示。

Opensips 代码调用,

ssl = c->extra_data;

ret = SSL_read(ssl, buf, len);
if (ret >0)
{
}
else
{
    err = SSL_get_error(ssl, ret);
    switch (err) {
    case SSL_ERROR_ZERO_RETURN:
            LM_INFO("TLS connection to %s:%d closed cleanly\n", 
             ip_addr2a(&c->rcv.src_ip), c->rcv.src_port);
        /*
        * mark end of file
        */
        c->state = S_CONN_EOF;
        return 0;

    case SSL_ERROR_WANT_READ:
    case SSL_ERROR_WANT_WRITE:
        return 0;

    case SSL_ERROR_SYSCALL:
        LM_ERR("SYSCALL error -> (%d) <%s>\n",errno,strerror(errno));
    default:
            LM_ERR("TLS connection to %s:%d read failed\n", ip_addr2a(&c->rcv.src_ip), c->rcv.src_port);
        LM_ERR("TLS read error: %d\n",err);
        c->state = S_CONN_BAD;
        tls_print_errstack();
        return -1;
}

我想强调一下 TLS 连接建立得很好,并且成功接收和发送了一条消息。当收到第二条消息并调用 SSL_read 时,会出现以下错误,

2018-05-11T11:23:16.000-04:00 [local2] [err] ffd-alpha-zone1-ccm1.ipc.com /usr/sbin/opensipsInternal[10325]: 错误:core:_tls_read: TLS 连接到 10.204 .34.62:51519 读取失败 2018-05-11T11:23:16.000-04:00 [local2] [err] ffd-alpha-zone1-ccm1.ipc.com /usr/sbin/opensipsInternal[10325]:错误:核心: _tls_read:TLS 读取错误:1 2018-05-11T11:23:16.000-04:00 [local2] [err] ffd-alpha-zone1-ccm1.ipc.com /usr/sbin/opensipsInternal[10325]: ERROR:core :tls_print_errstack:TLS errstack:错误:140890B2:SSL 例程:SSL3_GET_CLIENT_CERTIFICATE:没有返回证书

在 pcap 中,双方的每个 tls 数据包都会重新传输,当读取此数据包时,似乎该数据包是分片数据包的第二部分。

谢谢,

标签: sslopensips

解决方案


推荐阅读