Hallo Linuxer,
vielen Dank für deine Antwort :
Mein Script sieht zur Zeit folgendermaßen aus :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/perl
# -----------------------------------------------------------------------------
use strict;
use warnings;
use Modules::Parser;
# -----------------------------------------------------------------------------
my $Config_Eintraege = &Parser_Initialisierung( );
# -----------------------------------------------------------------------------
# SSL - Server
use IO::Socket::SSL;
&Parser_Pruefung( );
my $SSL_Server = IO::Socket::SSL -> new(
# Initialisierung der Server - Adresse & des Ports
LocalAddr => $Config_Eintraege -> { SSL_SERVER_ADRESSE } ,
LocalPort => $Config_Eintraege -> { SSL_SERVER_PORT } ,
Listen => 10 ,
# Zertifikate für die Authentifizierung
SSL_cert_file => $Config_Eintraege -> { SSL_SERVER_PUBLIC_KEY_FOLDER } . $Config_Eintraege -> { SSL_SERVER_PUBLIC_KEY_IDENTIFIER } ,
SSL_key_file => $Config_Eintraege -> { SSL_SERVER_PRIVATE_KEY_FOLDER } . $Config_Eintraege -> { SSL_SERVER_PRIVATE_KEY_IDENTIFIER } ,
) or die "failed to listen: $!";
# -----------------------------------------------------------------------------
# Akzeptiere Clients
while( 1 )
{
# Warte auf neue Verbindung
my $Akzeptierung_Verbindung_Clients = $SSL_Server -> accept or die "Fehler bei der Akzeptierung des Handshakes : !";
my $client_address = $Akzeptierung_Verbindung_Clients -> peerhost();
my $client_port = $Akzeptierung_Verbindung_Clients -> peerport();
print "Eingehende Verbindung : $client_address:$client_port" , "\n";
my $data = "";
$Akzeptierung_Verbindung_Clients -> read( $data , 1024 );
my @Pruefung_Eintraege = split( / , / , $data );
print "Ausgabe : $Pruefung_Eintraege[ 0 ]" , "\n";
print "Ausgabe : $Pruefung_Eintraege[ 1 ]" , "\n";
print "Ausgabe : $Pruefung_Eintraege[ 2 ]" , "\n";
my $Server_Rueckmeldung = "OK";
$Akzeptierung_Verbindung_Clients -> print( $Server_Rueckmeldung );
shutdown( $Akzeptierung_Verbindung_Clients , 1 );
}
$SSL_Server -> close( );
# -----------------------------------------------------------------------------
1;
Ich benutze IO::Socket::SSL -> new und die Werte wie Hostname, Port
& Zertifikate werden über einen Config Parser eingelesen. Während
dem Aufbau der Verbindung prüft IO::Socket::SSL das PW für die
Zertifkate.
Das Passwort wird immer in der Konsole abgefragt, wenn ich das Script
( ohne Kompilierung ) ausführe.
Grundsätzlich ist in dem Script das Tk Modul schon enthalten,
ich benutze es z. B. für das Fehler - Handling.
EDIT :
SSL_passwd_cb ist wohl die Lösung. Ich probiere es aus & gebe dir
eine Rückmeldung. :-)
QuoteKeys should be PEM formatted, and if they are encrypted, you will be prompted to enter a password before the socket is formed (unless you specified the SSL_passwd_cb option).
Viele Grüße
YAPD
Last edited: 2016-04-12 23:07:31 +0200 (CEST)
Yet Another Perl Developer