**********************************************************************
***
*** NOTE!! This SSLeay interface is already depreciated!!!!
***
*** Eric Young is currently implementing his own version of the
*** SSLeay modules for Perl. You should not really use this code,
*** but instead wait for Eric's version. When it appears
*** Crypt-SSLeay will go away.
***
**********************************************************************
Crypt::SSLeay
-------------
This is an Perl interface to the SSLeay library by Eric Young. SSLeay
is a free implementation of Netscape's SSL protocol. You can get more
information about SSLeay and SSL from these places:
http://www.psy.uq.oz.au/~ftp/Crypto/
ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL/
http://www.netscape.com/newsref/std/SSL.html
The modules in this package are meant to replace the Net::SSLeay
module by Sampo Kellomaki which as far as I can see is not maintained
any more. I have not been able to reach Sampo on his mail addresses.
I changed the module name because I did not want to stay completely
compatible with Sampo's interfaces.
The main motivation for doing this is to improve the SSL support in
libwww-perl. Using the old Net::SSLeay module LWP was able to talk to
HTTPS servers, but you could not examine the ciphers used, the
server certificates or use client certificates.
The following modules are available:
Crypt::SSLeay
-------------
The Crypt::SSLeay module gives access to the SSLeay classes. The
classes mirror the SSLeay C interface onto Perl OO. The interface to
the SSLeay read/write functions are made similar to the interface of
the sysread/syswrite Perl builtins. Another plan of mine was to not
use integer constants but instead pass suitable strings as parameters
to the API (where the C API use #define constants). Currently, none
of the supported methods have needed this.
The currently supported classes are:
Crypt::SSLeay::CTX
Crypt::SSLeay::Conn
Crypt::SSLeay::X509
(The 'Conn' class is an invention of mine. It represents an SSL
connection. The C API only use the 'SSL_' prefix for these
functions.)
Crypt::SSLeay::MainContext
--------------------------
This module gives an easy (procedural) interface to a single instance
of the Crypt::SSLeay::CTX class. The methods of the
Crypt::SSLeay::CTX can be imported as plain functions. The state of
the managed CTX object is also initialized from various environment
variables (today only $ENV{SSL_CIPHER}). This CTX is used by default
by the connections created as instances of the Net::SSL module.
Net::SSL
--------
The Net::SSL module is a IO::Socket::INET subclass that makes use of
the SSL protocol mostly transparent (the getlines?, (un)?getc and
accept methods are not implemented yet). This makes any network
application based on IO::Socket::INET instantly SSL aware by just
instantiating a Net::SSL object instead of a IO::Socket::INET object.
Basically you can access a HTTPS server like this:
require Net::SSL;
$sock = Net::SSL->new(PeerAddr => "shop.sol.no",
PeerPort => 443) || die "Can't connect";
# Who did we connect to (special Net::SSL methods)?
print $sock->get_peer_certificate->subject_name, "\n";
print $sock->get_cipher, "\n";
# The normal HTTP protocol
$sock->print("GET / HTTP/1.0\n\n");
while ($sock->read($buf, 1024)) {
print $buf;
}
If you want to control the SSL context used you use the
Crypt::SSLeay::MainContext module (or pass a reference to a
Crypt::SSLeay::CTX object with the Net::SSL constructor.)
INSTALLATION
You must first install SSLeay-0.6.6. The Crypt::SSLeay module does
not really work the the 0.8.X versions of SSLeay yet. Once this is
accomplished you just perform the usual steps:
perl Makefile.PL
make
make test
make install
COPYRIGHT
� 1998 Gisle Aas. All rights reserved.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.