Thread Prüfen auf TLSv1.2 bei LWP (https) (4 answers)
Opened by thecoder2012 at 2013-10-20 07:02

thecoder2012
 2013-10-20 07:02
#171330 #171330
User since
2013-02-04
64 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe das Problem wie ich TLSv1.2 bei LWP überprüfen kann.
Kennt jemand dazu eine Möglichkeit?
EDIT: Aktueller Cipher wird in den Header für LWP geschrieben.

Code um nur TLSv1.2 mit LWP zu erlauben:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#use LWP::Simple qw($ua get)
use LWP::UserAgent;

#$ENV{PERL_NET_HTTPS_SSL_SOCKET_CLASS} = "IO::Socket::SSL";
#use IO::Socket::SSL; IO::Socket::SSL::set_defaults(SSL_cipher_list => "AES256-SHA256:!AES256-SHA");

#Curl => http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTSSLVERSION
my $ua = LWP::UserAgent->new(
        ssl_opts => {
                SSL_version => 'TLSv12:!SSLv2:!SSLv3:!TLSv1:!TLSv11',#only 1 protocol without !
                verify_hostname => 0,#$ENV{'PERL_LWP_SSL_VERIFY_HOSTNAME'} = 0; (CURLOPT_SSL_VERIFYHOST)
                SSL_verify_mode => SSL_VERIFY_NONE #(CURLOPT_SSL_VERIFYPEER )
        }
);
$ua->timeout(10);
#$ua->ssl_opts(SSL_version => 'TLSv12:!SSLv2:!SSLv3:!TLSv1:!TLSv11');
#print LWP::UserAgent->new()->request(HTTP::Request->new(GET=>"https://www.perl-community.de/"))->content;'
my $response = $ua->get('https://www.perl-community.de/');

if($response->is_success){
        print $response->decoded_content;
}else{
        die $response->status_line;
}


Ich fande keine Möglichkeit entweder die SSL_version oder die Cipher abzufragen. Siehe auch http://www.openssl.org/docs/apps/ciphers.html#CIPH...

Beispiel mit CPAN:IO::Socket::SSL um den Cipher zu erfahren:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use IO::Socket::SSL;

my $client = IO::Socket::SSL->new(
        PeerAddr => 'www.perl-community.de',#AES256-SHA = TLSv1 (1.0)
        PeerPort => '443',
        Proto    => 'tcp',
        SSL_verify_mode => 0,#0x00?
        SSL_version => 'TLSv12:!SSLv2:!SSLv3:!TLSv1:!TLSv11' #best is TLSv12
);

if(defined $client){
        #print $client->get_cipher() . "\n";#list => http://www.openssl.org/docs/apps/ciphers.html#CIPHER_STRINGS
        print $client "GET / HTTP/1.0\r\n\r\n";
        print <$client>;
        close $client;
}else{
        warn "I encountered a problem: ",IO::Socket::SSL::errstr();
}
exit;


Möchte es möglichst mit LWP realisieren um nicht auf andere Module (low level) bzw. Libs wie Curl ausweichen zu müssen.
Zertifikate prüfe ich normal auch aber für den Test nicht sinnvoll. Habe meine Browser sowieso schon auf nur TLSv1.2 und höher eingestellt.

Hinweis: Die Beispiele funktionieren einwandfrei. Einfach perl-community.de gegen google.de als Beispiel tauschen.

Das zweite Problem ist das perl-community.de nur TLSv1 kann. Mag einer mal den Apache/mod_ssl aktualisieren? TLSv1.2 wird in aktuellen Versionen von Apache, nginx und Lighttpd unterstützt. Viele nutzen noch TLSv1 only. Bei Banken finde ich es allerdings bedenklich. Siehe http://www.kuketz-blog.de/nsa-abhoersichere-ssl-ve...
Ich fühle mich sonst nicht mehr sicher in diesem Forum!
Last edited: 2013-10-20 15:41:25 +0200 (CEST)

View full thread Prüfen auf TLSv1.2 bei LWP (https)