ssl - 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 数据包都会重新传输,当读取此数据包时,似乎该数据包是分片数据包的第二部分。
谢谢,
解决方案
推荐阅读
- angular - 使用 NPM 将纯 JS 库添加到 Ionic / Angular
- python - 如何使用显式值评估带有索引变量的 SymPy 表达式?
- windows - MinGW 丢失了 boost 文件
- javascript - JavaScript 和 HTML 上的大量数据导致 XAMPP 中的“页面无响应”对话框
- c - 这里的算法发生了什么,代码与C中的递归问题有关?
- android - 如何从 Fresco SimpleDraweeView 获取 gif?
- sql - INSERT 语句与外键约束冲突?
- python - 使用两个变量生成数据
- java - 如何在 FirebaseApp / NetHttpTransport 上配置连接超时
- objective-c - `attemptRecovery(fromError:optionIndex:)` 在 NSDocument 的 Swift 子类的超类中找不到