use strict; use warnings; use IO::Socket::SSL; # auto-flush on socket $| = 1; # creating a listening socket my $socket = new IO::Socket::SSL ( LocalHost => '0.0.0.0', LocalPort => '7777', Proto => 'tcp', Listen => 5, Reuse => 1, SSL_cert_file => 'cert.pem', SSL_key_file => 'key.pem', ); die "cannot create socket $!\n" unless $socket; print "server waiting for client connection on port 7777\n"; while(1) { # waiting for a new client connection my $client_socket = $socket->accept() or die "SSL_ERROR = :$SSL_ERROR:\n"; # get information about a newly connected client #my $client_address = $client_socket->peerhost(); #my $client_port = $client_socket->peerport(); #print "connection from $client_address:$client_port\n"; # read up to 1024 characters from the connected client my $data = ""; $client_socket->recv($data, 1024); print "received data: $data\n"; # write response data to the connected client $data = "ok"; $client_socket->send($data); # notify client that response has been sent shutdown($client_socket, 1); } $socket->close(); #### use strict; use warnings; use IO::Socket::INET; use IO::Socket::SSL; # auto-flush on socket $| = 1; # create a connecting socket my $socket = new IO::Socket::SSL ( PeerAddr => '192.168.1.59', PeerPort => '7777', Proto => 'tcp', Domain => AF_INET, ); die "cannot connect to the server :$!: :$SSL_ERROR:\n" unless $socket; print "connected to the server\n"; # data to send to a server my $req = 'hello world'; my $size = $socket->send($req); print "sent data of length $size\n"; # notify server that request has been sent shutdown($socket, 1); # receive a response of up to 1024 characters from server my $response = ""; $socket->recv($response, 1024); print "received response: $response\n"; $socket->close(); #### SSL accept attempt failed because of handshake problems error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca