#!/usr/bin/perl use strict; use vars qw($opt_p $opt_n $opt_bench $opt_debug $opt_version $opt_v $opt_help $opt_cert $opt_key $opt_cafile $opt_cadir ); use lib qw(lib); use Net::SSL; use File::Basename; use Benchmark; use Getopt::Long; &GetOptions ('p:s' => \$opt_p, 'proxy:s' => \$opt_p, 'bench:n' => \$opt_bench, 'd' => \$opt_debug, 'version:i' => \$opt_version, 'v:i' => \$opt_version, 'h' => \$opt_help, 'help' => \$opt_help, 'cert:s' => \$opt_cert, 'key:s' => \$opt_key, 'CAfile:s' => \$opt_cafile, 'CAdir:s' => \$opt_cadir, ); my $basename = &File::Basename::basename($0); # define sub first, in case you are reading the source :) sub help { print <new( PeerAddr => $host, PeerPort => $port, SSL_Debug => $opt_debug, Timeout => 15, ); $sock || ($@ ||= "no Net::SSL connection established"); my $error = $@; $error && die("Can't connect to $host:$port; $error; $!"); my $out; $out .= "WEB SITE : $host:$port\n"; $out .= "CIPHER : ".$sock->get_cipher."\n"; my $cert = $sock->get_peer_certificate; $out .= "CERT SUBJECT : ".$cert->subject_name."\n"; $out .= "CERTIFIED BY : ".$cert->issuer_name."\n"; $out .= "CERT NOT BEFORE: ".$cert->not_before."\n"; $out .= "CERT NOT AFTER : ".$cert->not_after."\n"; $out .= "\n"; $sock->print("$method $path HTTP/1.0\n\n"); print $out; $out = ''; my $buf = ''; while ($sock->read($buf, 1024)) { $out .= $buf; } unless($opt_bench) { print $out; } 1; }