Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssl PJSIP TLS验证错误(PJSIP_TLS_ECERTVERIF)_Ssl_Certificate_Voip_Pjsip_Verify - Fatal编程技术网

Ssl PJSIP TLS验证错误(PJSIP_TLS_ECERTVERIF)

Ssl PJSIP TLS验证错误(PJSIP_TLS_ECERTVERIF),ssl,certificate,voip,pjsip,verify,Ssl,Certificate,Voip,Pjsip,Verify,我最近开始使用PJ项目和GTK+开发一个小型SIP软电话应用程序。我的主要目标是创建一个支持TLS和SRTP加密以及MWI的软电话。但是,我在库注册帐户的部分遇到了问题,因为当我请求应用程序验证服务器时,应用程序未能验证服务器。 我以为我在编写代码时误解了什么,因为我是一个新手,但今天我刚刚使用源代码中附带的PJSUA应用程序测试了库,它可以注册我的SIP帐户,除非我使用-tls verify server标志启动程序。 为了说明这一点,我已经为Asterisk创建了我自己的证书颁发机构、密钥和

我最近开始使用PJ项目和GTK+开发一个小型SIP软电话应用程序。我的主要目标是创建一个支持TLS和SRTP加密以及MWI的软电话。但是,我在库注册帐户的部分遇到了问题,因为当我请求应用程序验证服务器时,应用程序未能验证服务器。 我以为我在编写代码时误解了什么,因为我是一个新手,但今天我刚刚使用源代码中附带的PJSUA应用程序测试了库,它可以注册我的SIP帐户,除非我使用-tls verify server标志启动程序。 为了说明这一点,我已经为Asterisk创建了我自己的证书颁发机构、密钥和证书,并将CA安装到了我的机器上。 我必须注意,此设置与商业软件配合使用,它可以毫无问题地验证证书

我使用的PJSUA标志:

--use-tls
--tls-ca-file /etc/ssl/certs/ca-certificates.crt
--id=sip:u-kuklinistvan1@kingdom.info.tm;transport=tls
--registrar=sip:kingdom.info.tm;transport=tls
--realm=kingdom.info.tm
--username=u-kuklinistvan1
--password=xxxxxx
--use-srtp=2
--mwi
--tls-verify-server
它说:

…这不可能是真的,因为OpenSSL本身接受证书:

openssl s_client -CAfile /etc/ssl/certs/ca-certificates.crt -connect kingdom.info.tm:5061
额外信息 我通过hostname kingdom.info.tm将PJSUA作为端点连接到注册器

有没有可能我遇到了一个bug或者我只是不明白什么? 谢谢你的帮助

。。。与证书中指定的任何标识都不匹配

。。。这可能不是真的,因为OpenSSL本身接受证书:。。。openssl s_客户端

错误消息指的是根据证书检查身份,即根据证书使用者备选名称、通用名称中的名称检查您提供的主机名。openssl s_客户端不进行任何身份检查,只检查有效的信任链


查看它实际包含的服务器提供的证书,其中包含kingdom.info.tm的通用名称。但从错误消息来看,它期望IP地址:TLS证书验证结果为[94.21.11.229:5061]:。。。。您是否使用IP地址指定了对等方的SIP URL?

谢谢您的回答。理论上,我已经在SIPURI中指定了域,如您所见-id=SIP:u-kuklinistvan1@kingdom.info.tm;传输=tls。是否可能是因为名称解析?不幸的是,我有动态IP地址,所以我只能长期将我的证书分配给一个域。我不明白。不是您自己的IP与证书相关,而是您作为代理或端点连接到的主机的名称,即连接的服务器端。我认为您必须使用TLS连接到具有适当证书的代理,并且不能使用直接连接,因为您没有与端点匹配的证书。请原谅我混淆:这是我自己的服务器,它位于我的LAN上,端口5061已转发。此设置与应用程序CSipSimple for Android配合使用,即使使用家庭局域网,甚至使用移动网络,只要网络配置正确。服务器使用由我自己的CA验证的证书,我为此创建了CA,并且此CA安装在我的Android智能手机上。我只看到您使用公共域作为凭据。如果这是您自己的服务器,则需要为其指定一个固定名称,然后可以将该名称放入证书中,并使用该名称访问服务器。这可能是您没有的固定IP,也可能是动态IP的固定名称,您可以从DynDNS提供商处获得。此域是使用freedns.fear.org的服务创建的,服务器会定期更新域的IP地址,此时kingdom.info.tm指向我的网络,所以应该可以。顺便说一句,我以前用过DynDNS。使用FreeDNS或DynDNS有区别吗?
openssl s_client -CAfile /etc/ssl/certs/ca-certificates.crt -connect kingdom.info.tm:5061
Verify return code: 0 (ok)