# Net::Server::Proto::SSLEAY - Custom Net::Server SSL protocol handler ba... - perldoc - [phpMan]

## NAME
    [Net::Server::Proto::SSLEAY](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer%3A%3AProto%3A%3ASSLEAY/markdown) - Custom [Net::Server](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer/markdown) SSL protocol handler based on [Net::SSLeay](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3ASSLeay/markdown).

## SYNOPSIS
    See [Net::Server::Proto](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer%3A%3AProto/markdown).

        use base qw([Net::Server::HTTP](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer%3A%3AHTTP/markdown));
        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
        }]);

## DESCRIPTION
    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 improvement under SSLEAY, please email
    <<paul@seamons.com>>.

    Protocol module for [Net::Server](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer/markdown). This module implements a secure socket layer over tcp (also
    known as SSL). See [Net::Server::Proto](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer%3A%3AProto/markdown).

    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](https://www.chedong.com/phpMan.php/perldoc/IO%3A%3ASocket%3A%3ASSL/markdown).

## PARAMETERS
    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.

## METHODS
    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.

## BUGS
    There are probably many.

## LICENCE
    Distributed under the same terms as [Net::Server](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer/markdown)

## THANKS
    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.

