|
|
Net::Server::Proto::SSL - Net::Server SSL protocol.
See the Net::Server::Proto manpage.
Experimental. If anybody has any successes or ideas for improvment under SSL, please email <paul@seamons.com>.
Protocol module for Net::Server. This module implements a secure socket layer over tcp (also known as SSL). See the Net::Server::Proto manpage.
There is a limit inherent from using IO::Socket::SSL, namely that only one SSL connection can be maintained by Net::Server. However, Net::Server should also be able to maintain any number of TCP, UDP, or UNIX connections in addition to the one SSL connection.
Additionally, getline support is very limited and writing directly to STDOUT will not work. This is entirely dependent upon the implementation of IO::Socket::SSL. getline may work but the client is not copied to STDOUT under SSL. It is suggested that clients sysread and syswrite to the client handle (located in $self->{server}->{client} or passed to the process_request subroutine as the first argument).
In addition to the normal Net::Server parameters, any of the SSL parameters from IO::Socket::SSL may also be specified. See the IO::Socket::SSL manpage for information on setting this up.
Christopher A Bongaarts pointed out that if the SSL negotiation is slow then the server won't be accepting for that period of time (because the locking of accept is around both the socket accept and the SSL negotiation). This means that as it stands now the SSL implementation is susceptible to DOS attacks. To fix this will require deviding up the accept call a little bit more finely which may not yet be possible with IO::Socket::SSL. Any ideas or patches on this bug are welcome.
Distributed under the same terms as Net::Server
Thanks to Vadim for pointing out the IO::Socket::SSL accept was returning objects blessed into the wrong class.