在生产设置中,随机出现一个 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 数据包都会重新传输,当读取此数据包时,似乎该数据包是分片数据包的第二部分。
谢谢,