ssl - 尝试进行 TLS 调用时 TLS 握手失败的原因

标签 ssl openssl pjsip

我正在尝试使用 pjsip 安装中的 pjsua 程序在两个虚拟机之间进行安全调用。我通过以下方式在每个节点上启动程序:

pjsua-x86_64-unknown-linux-gnu --use-tls

然后我输入 m 进行调用并提交:sip:xxx.xxx.xx.x:5061;transport=TLS

在接收端我看到: 握手未能接受 xxx.xxx.xx.x:58392: no shared cipher

在拨号端我看到: 无法发送请求消息 INVITE/cseq=17559 (tdta0x1ab89e0)! err=495040(sslv3告警握手失败)

谁能帮我理解为什么会这样?

最佳答案

看起来服务器(在您的情况下是接收端)和客户端(在您的情况下是拨号端)的密码配置不匹配。

错误没有共享密码(警报 40)表示在服务器端至少没有任何一种客户端使用的密码可用

您需要查看两端对 SSL_CTX_set_cipher_list(如果您使用的是 OpenSSL)API 的调用。

尝试在客户端和服务器机器上配置通用密码。

有时,由于公共(public)证书使用的密码不可用,您可能会遇到相同的错误(无字符密码)。最好验证第一步,然后验证您的证书算法。

我的客户端服务器配置也遇到过类似的问题。

引用:

"no shared cipher" error with python and OpenSSL

关于ssl - 尝试进行 TLS 调用时 TLS 握手失败的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36460179/

相关文章:

ssl - 将 PFX 转换为 PEM 并出现错误 "unable to load certificate"

ruby-on-rails - ruby 编码 p12 证书(二进制)并作为 json 响应发送

ssl - curl 和 openssl 查看不同的发行者

c++ - OpenSSL 解密 - EVP_DecryptFinal_ex 失败

ios - 为所有架构编译 PJSIP 2.5 库

ssl - 从特定域捕获数据包转储

ssl - 为什么我在向 HTTPS 服务器发出 POST 请求时收到 WRONG_VERSION_NUMBER?

apache - 如何从一个 SSL 域重定向到具有正确通用名称的域?

ios - 将pjsip集成到iOS应用中

webrtc - PJSIP - (Web)RTC 集成