与net :: sip的perl ssl tls连接

穆罕默德·易卜拉欣

我尝试在Perl中创建tls net :: sip connetion

我的SSL连接良好

这是我的子

start_connection("2.50.44.55:5061", "100", "100");
sub start_connection{
    my @parms = @_;
    my $host  = $parms[0];
    my $user  = $parms[1];
    my $pass  = $parms[2]; 

     $sock = IO::Socket::SSL->new(
             PeerAddr => $host,
             SSL_fingerprint => 'sha1$CE68626830EAF46482F55CB7FBF4DA1B77889FDD',
        ) or die $SSL_ERROR;

    $sock->connect_SSL() or die $SSL_ERROR; 

    my $leg = Net::SIP::Leg->new(sock =>  $sock , proto => 'tls' , host =>  $host  )|| exit ;


    my $ua = Net::SIP::Simple->new(
        registrar => $host,
        domain => $host, 
        from => $user,
        auth => [ $user,$pass ],
         leg => $leg,
    )|| exit;
    $ua->register;
    my $err = $ua->error; 
    print $err;   
}

这是我的IO :: Socket :: SSL调试

DEBUG: .../IO/Socket/SSL.pm:3010: new ctx 37429024
DEBUG: .../IO/Socket/SSL.pm:762: socket not yet connected
DEBUG: .../IO/Socket/SSL.pm:764: socket connected
DEBUG: .../IO/Socket/SSL.pm:787: ssl handshake not started
DEBUG: .../IO/Socket/SSL.pm:832: not using SNI because hostname is unknown
DEBUG: .../IO/Socket/SSL.pm:864: request OCSP stapling
DEBUG: .../IO/Socket/SSL.pm:894: call Net::SSLeay::connect
DEBUG: .../IO/Socket/SSL.pm:2864: ok=0 [1] /CN=Asterisk Private CA/O=asterisk/CN=Asterisk Private CA/O=asterisk
DEBUG: .../IO/Socket/SSL.pm:2864: ok=0 [1] /CN=Asterisk Private CA/O=asterisk/CN=Asterisk Private CA/O=asterisk
DEBUG: .../IO/Socket/SSL.pm:2864: ok=1 [1] /CN=Asterisk Private CA/O=asterisk/CN=Asterisk Private CA/O=asterisk
DEBUG: .../IO/Socket/SSL.pm:2864: ok=0 [0] /CN=Asterisk Private CA/O=asterisk/CN=localhost/O=asterisk
DEBUG: .../IO/Socket/SSL.pm:2864: ok=1 [0] /CN=Asterisk Private CA/O=asterisk/CN=localhost/O=asterisk
DEBUG: .../IO/Socket/SSL.pm:897: done Net::SSLeay::connect -> 1
DEBUG: .../IO/Socket/SSL.pm:952: ssl handshake done
DEBUG: .../IO/Socket/SSL.pm:3010: new ctx 45515568
DEBUG: .../IO/Socket/SSL.pm:3010: new ctx 46461040
Failed with error 113DEBUG: .../IO/Socket/SSL.pm:3059: free ctx 46461040 open=46461040 45515568 37429024
DEBUG: .../IO/Socket/SSL.pm:3063: free ctx 46461040 callback
DEBUG: .../IO/Socket/SSL.pm:3070: OK free ctx 46461040
DEBUG: .../IO/Socket/SSL.pm:3059: free ctx 45515568 open=45515568 37429024
DEBUG: .../IO/Socket/SSL.pm:3070: OK free ctx 45515568
DEBUG: .../IO/Socket/SSL.pm:3059: free ctx 37429024 open=37429024
DEBUG: .../IO/Socket/SSL.pm:3063: free ctx 37429024 callback
DEBUG: .../IO/Socket/SSL.pm:3070: OK free ctx 37429024

这是一个很好的连接

这是我的net :: sip调试

打印$ err时;输出失败,出现错误113

它应该在Print $ err处;结果她因错误404失败或因错误403失败,但我认为支腿连接有问题

1590637618.9245 DEBUG:<99> Net::SIP::Dispatcher::Eventloop::addFD[61]: Net::SIP::Dispatcher::Eventloop=HASH(0x18f29c0) added fn=3 rw(0) sock=103.145.12.104:60188
1590637618.9249 DEBUG:<100> Net::SIP::Dispatcher::Eventloop::addFD[64]: maxfd=4
1590637618.9257 DEBUG:<100> Net::SIP::Endpoint::Context::new[84]: CREATE context Net::SIP::Endpoint::Context=HASH(0x18f67f8) callid=16c05c388bcb952fd738fd5aeb9dbcd2
1590637618.9260 DEBUG:<10> Net::SIP::Endpoint::new_request[156]: create new request for REGISTER within new call 16c05c388bcb952fd738fd5aeb9dbcd2
1590637618.9270 DEBUG:<50> Net::SIP::Endpoint::new_request[164]: request=REGISTER sip:2.50.44.55:5061 SIP/2.0
1590637618.9270 DEBUG:<50>      Call-id: 16c05c388bcb952fd738fd5aeb9dbcd2
1590637618.9270 DEBUG:<50>      Contact: 100 <sips:100@[2.50.44.55:5061]:60188>
1590637618.9270 DEBUG:<50>      Cseq: 1 REGISTER
1590637618.9270 DEBUG:<50>      Expires: 900
1590637618.9270 DEBUG:<50>      From: 100 <sips:[email protected]:5061>;tag=8a2c944e529b5155822a25c60e8b8865
1590637618.9270 DEBUG:<50>      Max-forwards: 70
1590637618.9270 DEBUG:<50>      To: 100 <sips:[email protected]:5061>
1590637618.9270 DEBUG:<50>      Content-length: 0
1590637618.9270 DEBUG:<50>
1590637618.9270 DEBUG:<50>
1590637618.9295 DEBUG:<100> Net::SIP::Dispatcher::deliver[392]: deliver Net::SIP::Request=HASH(0x18fbb80)
1590637618.9300 DEBUG:<100> Net::SIP::Dispatcher::Packet::prepare_retransmits[1318]: retransmits 1590637618 + 0.5 1.5 3.5 7.5 11.5 15.5 19.5 23.5 27.5 31.5
1590637618.9303 DEBUG:<100> Net::SIP::Dispatcher::__deliver[607]: no dst_addr or leg yet, uri='sip:2.50.44.55:5061'
1590637618.9307 DEBUG:<100> Net::SIP::Dispatcher::resolve_uri[736]: domain=55.44.50.2.in-addr.arpa
1590637618.9309 DEBUG:<50> Net::SIP::Dispatcher::resolve_uri[766]: setting dst_addr from URI because IP address given
1590637618.9317 DEBUG:<100> Net::SIP::Dispatcher::__resolve_uri_final[837]: $VAR1 = [
1590637618.9317 DEBUG:<100>               {
1590637618.9317 DEBUG:<100>                 'proto' => 'udp',
1590637618.9317 DEBUG:<100>                 'prio' => 65536,
1590637618.9317 DEBUG:<100>                 'addr' => '2.50.44.55',
1590637618.9317 DEBUG:<100>                 'port' => '5061',
1590637618.9317 DEBUG:<100>                 'host' => '2.50.44.55',
1590637618.9317 DEBUG:<100>                 'family' => 2
1590637618.9317 DEBUG:<100>               },
1590637618.9317 DEBUG:<100>               {
1590637618.9317 DEBUG:<100>                 'proto' => 'tcp',
1590637618.9317 DEBUG:<100>                 'prio' => 65536,
1590637618.9317 DEBUG:<100>                 'addr' => '2.50.44.55',
1590637618.9317 DEBUG:<100>                 'port' => '5061',
1590637618.9317 DEBUG:<100>                 'host' => '2.50.44.55',
1590637618.9317 DEBUG:<100>                 'family' => 2
1590637618.9317 DEBUG:<100>               }
1590637618.9317 DEBUG:<100>             ];
1590637618.9317 DEBUG:<100>
1590637618.9357 DEBUG:<50> Net::SIP::Dispatcher::__resolve_uri_final[864]: no leg with udp to 2.50.44.55:5061
1590637618.9360 DEBUG:<50> Net::SIP::Dispatcher::__resolve_uri_final[864]: no leg with tcp to 2.50.44.55:5061
1590637618.9679 DEBUG:<100> Net::SIP::Simple::error[244]: 1590637618.9364 DEBUG: Net::SIP::Debug::stacktrace[194]: set error to Failed with error 113 at /root/perl5/lib/perl5/Net/SIP/Simple.pm line 244.
1590637618.9679 DEBUG:<100>             Net::SIP::Simple::error('Net::SIP::Simple=HASH(0x18f2948)', 'Failed with error 113') called at /root/perl5/lib/perl5/Net/SIP/Simple.pm line 377
1590637618.9679 DEBUG:<100>             Net::SIP::Simple::__ANON__('Net::SIP::Simple=HASH(0x18f2948)', 'SCALAR(0x15dc8b8)', 'SCALAR(0x15dc9d8)', 'Net::SIP::Endpoint=HASH(0x18f6078)', 'Net::SIP::Endpoint::Context=HASH(0x18f67f8)', 113) called at /root/perl5/lib/perl5/Net/SIP/Util.pm line 474
1590637618.9679 DEBUG:<100>             Net::SIP::Util::invoke_callback('ARRAY(0x18f6570)', 'Net::SIP::Endpoint=HASH(0x18f6078)', 'Net::SIP::Endpoint::Context=HASH(0x18f67f8)', 113) called at /root/perl5/lib/perl5/Net/SIP/Endpoint/Context.pm line 258
1590637618.9679 DEBUG:<100>             Net::SIP::Endpoint::Context::request_delivery_done('Net::SIP::Endpoint::Context=HASH(0x18f67f8)', 'Net::SIP::Endpoint=HASH(0x18f6078)', '16c05c388bcb952fd738fd5aeb9dbcd2 1', 113) called at /root/perl5/lib/perl5/Net/SIP/Endpoint.pm line 218
1590637618.9679 DEBUG:<100>             Net::SIP::Endpoint::_request_delivery_callback('Net::SIP::Endpoint=HASH(0x18f6078)', 'Net::SIP::Endpoint::Context=HASH(0x18f67f8)', 113, 'Net::SIP::Dispatcher::Packet=HASH(0x18fbd48)') called at /root/perl5/lib/perl5/Net/SIP/Util.pm line 474
1590637618.9679 DEBUG:<100>             Net::SIP::Util::invoke_callback('ARRAY(0x18f6708)', 113, 'Net::SIP::Dispatcher::Packet=HASH(0x18fbd48)') called at /root/perl5/lib/perl5/Net/SIP/Dispatcher.pm line 1351
1590637618.9679 DEBUG:<100>             Net::SIP::Dispatcher::Packet::trigger_callback('Net::SIP::Dispatcher::Packet=HASH(0x18fbd48)', 113) called at /root/perl5/lib/perl5/Net/SIP/Dispatcher.pm line 612
1590637618.9679 DEBUG:<100>             Net::SIP::Dispatcher::__ANON__('Net::SIP::Dispatcher=HASH(0x18f2c30)', 'Net::SIP::Dispatcher::Packet=HASH(0x18fbd48)', 113) called at /root/perl5/lib/perl5/Net/SIP/Util.pm line 474
1590637618.9679 DEBUG:<100>             Net::SIP::Util::invoke_callback('ARRAY(0x18fc7b0)', 113) called at /root/perl5/lib/perl5/Net/SIP/Dispatcher.pm line 868
1590637618.9679 DEBUG:<100>             Net::SIP::Dispatcher::__resolve_uri_final('ARRAY(0x18fc330)', 'ARRAY(0x18fc168)', 'ARRAY(0x18fc7e0)', 5061, 'ARRAY(0x18fc7b0)', 'ARRAY(0x1406e38)') called at /root/perl5/lib/perl5/Net/SIP/Dispatcher.pm line 820
1590637618.9679 DEBUG:<100>             Net::SIP::Dispatcher::resolve_uri('Net::SIP::Dispatcher=HASH(0x18f2c30)', 'sip:2.50.44.55:5061', 'ARRAY(0x18fc330)', 'ARRAY(0x18fc168)', 'ARRAY(0x18fc7b0)', undef) called at /root/perl5/lib/perl5/Net/SIP/Dispatcher.pm line 618
1590637618.9679 DEBUG:<100>             Net::SIP::Dispatcher::__deliver('Net::SIP::Dispatcher=HASH(0x18f2c30)', 'Net::SIP::Dispatcher::Packet=HASH(0x18fbd48)') called at /root/perl5/lib/perl5/Net/SIP/Dispatcher.pm line 416
1590637618.9679 DEBUG:<100>             Net::SIP::Dispatcher::deliver('Net::SIP::Dispatcher=HASH(0x18f2c30)', 'Net::SIP::Request=HASH(0x18fbb80)', 'id', '16c05c388bcb952fd738fd5aeb9dbcd2 1', 'callback', 'ARRAY(0x18f6708)', 'leg', undef, 'dst_addr', ...) called at /root/perl5/lib/perl5/Net/SIP/Endpoint.pm line 167
1590637618.9679 DEBUG:<100>             Net::SIP::Endpoint::new_request('Net::SIP::Endpoint=HASH(0x18f6078)', 'REGISTER', 'HASH(0x144a3d0)', 'ARRAY(0x18f6570)', undef, 'uri', 'sip:2.50.44.55:5061', 'expires', 900, ...) called at /root/perl5/lib/perl5/Net/SIP/Endpoint.pm line 114
1590637618.9679 DEBUG:<100>             Net::SIP::Endpoint::register('Net::SIP::Endpoint=HASH(0x18f6078)', 'auth', 'ARRAY(0x18f2930)', 'registrar', 'sip:2.50.44.55:5061', 'from', '100 <sips:[email protected]:5061>', 'contact', '100 <sips:100@[2.50.44.55:5061]:60188>', ...) called at /root/perl5/lib/perl5/Net/SIP/Simple.pm line 386
1590637618.9679 DEBUG:<100>             Net::SIP::Simple::register('Net::SIP::Simple=HASH(0x18f2948)') called at dd.pl line 37
1590637618.9679 DEBUG:<100>             main::start_connection('2.50.44.55:5061', 100, 100) called at dd.pl line 13
1590637618.9679 DEBUG:<100>
1590637618.9731 DEBUG:<100> Net::SIP::Dispatcher::cancel_delivery[449]: cancel packet id: 16c05c388bcb952fd738fd5aeb9dbcd2 1
1590637618.9734 DEBUG:<100> Net::SIP::Dispatcher::Eventloop::loop[156]: timeout = <undef>
1590637618.9737 DEBUG:<100> Net::SIP::Dispatcher::Eventloop::loop[188]: timeout = 0.950617074966431
1590637618.9739 DEBUG:<50> Net::SIP::Dispatcher::Eventloop::loop[191]: stopvar triggered
斯蒂芬·乌尔里希(Steffen Ullrich)

在SIP中,基础SIP会话独立于实际的TCP / UDP连接。这意味着在客户端,创建支脚时不应使用连接的插座。相反,应该仅提供创建套接字或提供未连接套接字的必要信息。后者在客户端上仅对UDP有意义,在UDP中,可以从未连接的套接字发送消息。使用TCP时,未连接的套接字将不起作用,因为需要将其连接以进行发送,但是如果连接中断,则无法多次连接。

基于此,代码应如下所示:

use strict;
use warnings;
use Net::SIP;

start_connection("2.50.44.55","5061","100", "100");

sub start_connection{
    my ($host,$port,$user,$pass) = @_;

    my $ua = Net::SIP::Simple->new(
        registrar => "sips:$host:$port",
        domain => $host,
        from => $user,
        auth => [ $user,$pass ],
        tls => {
            SSL_fingerprint => 'sha1$CE68626830EAF46482F55CB7FBF4DA1B77889FDD',
        },
    ) or die "failed to create UA";
    $ua->register or die $ua->error;
    print "ok\n";
}

这里仅给出创建套接字的必要信息,但是连接的套接字本身将在内部创建。确保注册服务商的网址sips:...前面有一个明确的名称,以指定应如何联系注册服务商。

请注意,因为它似乎是代码挂起。更深入地了解(使用perl -MNet::SIP::Debug=50 ...),可以看到使用给定凭据的身份验证失败,并且服务器一次又一次以相同realm但不同的opaque参数请求身份验证Net :: SIP使用两个参数的组合来检查这是否是相同的身份验证目标,因此它使用新的不透明性重试了身份验证,而不是失败。此问题已在908f5c8a0中修复,因此尝试时请查看最新版本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SSL连接出现TLS连接错误

来自分类常见问题

Perl Net :: SIP向用户代理注册SIP帐户

来自分类Dev

Perl Net :: SIP向用户代理注册SIP帐户

来自分类Dev

具有Mongodb tls / ssl连接的Meteorjs

来自分类Dev

Java中MQTT的TLS / SSL连接

来自分类Dev

perl IO :: Socket :: SSL SSL连接尝试失败

来自分类Dev

Perl LWP SSL连接:证书验证失败

来自分类Dev

将NET :: SMTP SSL / TLS与SOCKS一起使用

来自分类Dev

使用TLS(SSL)从Flash v11 +到nodejs的连接

来自分类Dev

设置并验证Python MySQL连接中使用的SSL / TLS版本

来自分类Dev

如何设置ActionMailer使用TLS连接所需的SSL协议?

来自分类Dev

RabbitMq TLS/SSL 连接错误,类型与表约束不兼容

来自分类Dev

禁用 VB.NET MySQL 连接的 SSL 要求

来自分类Dev

ekiga.net帐户的SIP连接参数是什么?

来自分类Dev

由于握手问题,PerL SSL连接尝试失败

来自分类Dev

雷鸟:SSL / TLS与STARTTLS

来自分类Dev

SSL / TLS WCF问题

来自分类Dev

OpenLDAP TLS与SSL

来自分类Dev

Python ssl 无法使用 TLS1.2 客户端连接到 TLS1.2 服务器

来自分类Dev

自POODLE以来,“无法创建SSL / TLS安全通道” Azure存储.NET API错误

来自分类Dev

该请求已中止:无法创建SSL / TLS安全通道。System.Net.WebException

来自分类Dev

使用WebClient时出现System.Net.WebException:无法创建SSL / TLS安全通道

来自分类Dev

SIP:IPSEC与TLS

来自分类Dev

HtmlUnit 2.15可以使用TLS代替SSL进行连接吗?

来自分类Dev

使用JDBC Thin和JKS的Oracle Database TLS1.2 / SSL连接

来自分类Dev

通过SSL / TLS连接访问Vagrant上的Node.js应用

来自分类Dev

通过SSL / TLS与节点mqtt客户端连接到mosquitto代理的问题

来自分类Dev

curl错误35:无法接收握手,SSL / TLS连接失败

来自分类Dev

ngx-mqtt通过webapp连接到SSL / TLS mosquitto代理

Related 相关文章

  1. 1

    SSL连接出现TLS连接错误

  2. 2

    Perl Net :: SIP向用户代理注册SIP帐户

  3. 3

    Perl Net :: SIP向用户代理注册SIP帐户

  4. 4

    具有Mongodb tls / ssl连接的Meteorjs

  5. 5

    Java中MQTT的TLS / SSL连接

  6. 6

    perl IO :: Socket :: SSL SSL连接尝试失败

  7. 7

    Perl LWP SSL连接:证书验证失败

  8. 8

    将NET :: SMTP SSL / TLS与SOCKS一起使用

  9. 9

    使用TLS(SSL)从Flash v11 +到nodejs的连接

  10. 10

    设置并验证Python MySQL连接中使用的SSL / TLS版本

  11. 11

    如何设置ActionMailer使用TLS连接所需的SSL协议?

  12. 12

    RabbitMq TLS/SSL 连接错误,类型与表约束不兼容

  13. 13

    禁用 VB.NET MySQL 连接的 SSL 要求

  14. 14

    ekiga.net帐户的SIP连接参数是什么?

  15. 15

    由于握手问题,PerL SSL连接尝试失败

  16. 16

    雷鸟:SSL / TLS与STARTTLS

  17. 17

    SSL / TLS WCF问题

  18. 18

    OpenLDAP TLS与SSL

  19. 19

    Python ssl 无法使用 TLS1.2 客户端连接到 TLS1.2 服务器

  20. 20

    自POODLE以来,“无法创建SSL / TLS安全通道” Azure存储.NET API错误

  21. 21

    该请求已中止:无法创建SSL / TLS安全通道。System.Net.WebException

  22. 22

    使用WebClient时出现System.Net.WebException:无法创建SSL / TLS安全通道

  23. 23

    SIP:IPSEC与TLS

  24. 24

    HtmlUnit 2.15可以使用TLS代替SSL进行连接吗?

  25. 25

    使用JDBC Thin和JKS的Oracle Database TLS1.2 / SSL连接

  26. 26

    通过SSL / TLS连接访问Vagrant上的Node.js应用

  27. 27

    通过SSL / TLS与节点mqtt客户端连接到mosquitto代理的问题

  28. 28

    curl错误35:无法接收握手,SSL / TLS连接失败

  29. 29

    ngx-mqtt通过webapp连接到SSL / TLS mosquitto代理

热门标签

归档