需要Net :: Server SSL服务器提示

时间:2012-07-06 19:44:28

标签: perl ssl tcp

我正在使用Net :: Server模块构建一个preforking SSL服务器。 客户端将传输二进制数据,或者为每个数据集打开一个新连接,或者让连接永久打开。

数据具有动态长度,标头指定有效负载长度。

问题:

  • 读取数据的推荐方法是什么,以支持持久连接?<​​/ li>
  • 如何在实际开始接收数据之前确定客户端是否正确建立了SSL会话?

代码模板:

#!/usr/bin/perl

use common::sense;

use IO::Socket;
use base qw(Net::Server::PreForkSimple);

my $sslErrorCallback = 'ssl_error_callback';
__PACKAGE__->run(
  port => "*:12345:ssleay:IPv4",
  SSL_key_file => "server.pem",
  SSL_cert_file => "server.crt",
  SSL_error_callback => \&$sslErrorCallback,
);
exit;

################################################################################

sub ssl_error_callback {
  print STDERR "SSL failed; Data::Dumper:Dumper(\$@)";
}

##
# process_request - for Net::Server
sub process_request {
  my $self = shift;
  my $serverProp = $self->{'server'};

  # howto check if ssl session is established?

  while(1) {
    # wait until new data is available
    # read/verify the header (5 byte)
    # read/verify the payload (XX byte)
    # do something with the payload
  };

  return;
}

1 个答案:

答案 0 :(得分:0)

  1. 覆盖read以检查已关闭的连接。
  2. 覆盖bind_SSL以执行额外的Net :: SSLeay检查。