Net::Server::Proto::SSLEAY - Custom Net::Server SSL protocol handler based on
Net::SSLeay.
See Net::Server::Proto.
use base qw(Net::Server::HTTP);
main->run(
proto => 'ssleay',
SSL_key_file => "/path/to/my/file.key",
SSL_cert_file => "/path/to/my/file.crt",
);
# OR
sub SSL_key_file { "/path/to/my/file.key" }
sub SSL_cert_file { "/path/to/my/file.crt" }
main->run(proto => 'ssleay');
# OR
main->run(
port => [443, 8443, "80/tcp"], # bind to two ssleay ports and one tcp
proto => "ssleay", # use ssleay as the default
ipv => "*", # bind both IPv4 and IPv6 interfaces
SSL_key_file => "/path/to/my/file.key",
SSL_cert_file => "/path/to/my/file.crt",
);
# OR
main->run(port => [{
port => "443",
proto => "ssleay",
# ipv => 4, # default - only do IPv4
SSL_key_file => "/path/to/my/file.key",
SSL_cert_file => "/path/to/my/file.crt",
}, {
port => "8443",
proto => "ssleay",
ipv => "*", # IPv4 and IPv6
SSL_key_file => "/path/to/my/file2.key", # separate key
SSL_cert_file => "/path/to/my/file2.crt", # separate cert
}]);
This module has reliably been used in situations receiving millions of hits on a
single box per day. If anybody has any successes or ideas for improvment under
SSLEAY, please email <paul@seamons.com>.
Protocol module for Net::Server. This module implements a secure
socket layer over tcp (also known as SSL). See Net::Server::Proto.
If you need more customization of the SSL layer, you may want to
investigate using SSL rather than SSLEAY as it uses the venerable(ish)
IO::Socket::SSL.
Currently there is support for the following:
- "SSL_cert_file"
- Full path to the certificate file to be used for this server. Should be in
PEM format.
- "SSL_key_file"
- Full path to the key file to be used for this server. Should be in PEM
format.
- "SSL_max_getline_length"
- Used during getline to only read until this many bytes are found. Default
is undef which means unlimited.
- "SSL_error_callback"
- Should be a code ref that will be called whenever error conditions are
encountered. It passes a source message and an arrayref of the
errors.
This module implements most of the common file handle operations. There are some
additions though:
- "read_until"
- Takes bytes and match qr. If bytes is defined - it will read until that
many bytes are found. If match qr is defined, it will read until the
buffer matches that qr. If both are undefined, it will read until there is
nothing left to read.
- "error"
- If an error occurred while writing, this method will return that
error.
Distributed under the same terms as Net::Server
Thanks to Bilbo at
http://devpit.org/wiki/OpenSSL_with_nonblocking_sockets_%28in_Perl%29 for
documenting a more reliable way of accepting and reading SSL connections.