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

4

我正在尝试使用自签名证书在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


你好,你知道如何在Android应用程序中禁用TLS证书验证吗? - user987760
使用 transport = UDP - Farhan
2个回答

5
由于自签名证书不能被官方的linphone应用程序预配置的第三方CA所识别,因此会出现这个问题。
Linphone使用自己的根CA存储列表,在收到来自您的sip服务器的证书时,linphone将使用该列表中的证书进行验证。
如果您不想禁用服务器证书验证(避免中间人攻击),并且由于linphone预配置的CA无法验证您的证书,则您必须创建自己的CA并将其添加到linphone的CA列表中您可以在linphone android源代码中找到CA列表:res/raw/rootca.pem,只需将您的CA添加到其中并重新编译即可。 我不熟悉linphone,但我认为这是一个解决方法。
一些有用的链接: 创建自己的SSL证书颁发机构(和卸载自签名证书) 在Android Linphone中使用自签名证书

这看起来不错,但在 rootca.pem 中添加 ca 并没有起作用。设备上会生成 x509 握手错误。希望能得到来自 Linphone 团队(因为他们的社区非常贫乏)或其他人的帮助,将不胜感激。 - Farhan
最终它成功了。问题在于生成证书。在rootca.pem中添加ca证书后,它注册成功了。但是现在要实现完全的身份验证,如何配置linphone以进行客户端证书验证呢? - Farhan
^ 上面也起作用了,linphonerc 文件中有一个设置,我们可以告诉它证书在哪里。它非常顺利地工作了。 :) - Farhan
你好,你知道如何在Android应用程序中禁用TLS证书验证吗? - user987760
@Farhan,请问您能否提供有关如何解决设备上生成的x509握手错误的详细信息? - Shiv Buyya
@ShivBuyya 我记不清了,但根据我2017年的评论,“问题在于生成证书”。我的建议是删除证书并从第1步重新生成。 - Farhan

1

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

  • 如果您可以访问Linphone服务器的Shell,您可以安装适当的证书,可以购买一个或(我推荐)使用Let's Encrypt的免费证书。

  • 如果不可能,可以将自签名证书安装到Android密钥库中:下载证书(如果Linphone提供Web GUI,则可以通过在地址栏中单击锁定符号以PEM格式在Chrome中下载),并将其放入SD卡。然后进入Android设置/安全性/证书管理/从存储安装并选择文件。但是,您可能会收到永久通知,指出您的网络可能受到监视。

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


我忘了提到,我正在编译Linphone并在服务器上处理Asterisk。 - Farhan
你好,你知不知道如何从 Android 应用程序中禁用 TLS 证书验证? - user987760

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接