Linphone Android:自签名证书的TLS握手错误

时间:2015-08-03 06:59:46

标签: android ssl linphone

我尝试使用自签名证书在Linphone Android中配置TLS,以便能够与FreeSWITCH SIP服务器通信。但SSL握手失败并出现以下错误:

频道[0x9ec3c000]:SSL握手失败:X509 - 证书验证失败,例如CRL,CA或签名检查失败 无法连接到[TLS://52.3.207.224:5061]

任何人都可以建议调试此问题的方法是什么?或者我们如何在Linphone Android中配置自签名证书。

注意:我不想按照以下建议禁用TLS服务器证书验证

[SIP] verify_server_certs = 0

2 个答案:

答案 0 :(得分:4)

这是因为官方linphone应用程序预先配置的第三方CA无法识别自签名证书。

linphone使用它自己的根CA存储列表,当linphone从你的sip服务器收到证书时,将验证服务器证书的使用情况。

如果您不想禁用服务器证书验证(可以避免中间人攻击),并且由于没有CA,预先配置的linphone可以验证您的证书,您必须创建自己的CA并将其添加到linphone的CA列表中。

你可以在linphone android源代码中找到CA列表:res/raw/rootca.pem 只需将您的CA添加到其中并重新编译。

我不熟悉linphone,但我认为这是要走的路。

一些有用的链接:

Creating Your Own SSL Certificate Authority (and Dumping Self Signed Certs)

Using Self-Signed Certs With Android Linphone

答案 1 :(得分:1)

这个问题有不同的解决方案:

  • 如果你有对Linphone服务器的shell访问权限,你可以安装一个合适的证书,购买一个或(我推荐)使用Let's Encrypt中的免费证书

  • 如果无法做到这一点,请将自签名证书安装到Android密钥库中:下载证书(如果Linphone提供网络gui,您可以通过点击锁定以PEM格式下载Chrome地址栏中的符号)并将其放在SD卡上。然后转到Android设置/安全/证书管理/从存储安装并选择您的文件。但是,您可能会收到永久通知,表明您的网络可能受到监控。

  • 如果您不想要该通知并具有超级用户权限,请按照上一步操作将新添加的文件从/data/misc/keychain/cacerts-added/移至/system/etc/security/cacerts/。然后重新启动设备,消息应该消失。