Hallo,ich möchte einen SSL-Server und einen zugehörigen SSL-Client bauen, die über IO::Socket::SSL kommunizieren.
Der Server soll sich dem Client gegenüber mit einem Zertifikat ausweisen und eine Verschlüsselte Verbindung zur Verfügung stellen.
Mein Problem ist jetzt, dass ich nicht weiß, welcher Teil (Server oder Client) welche Bestandteile des SSL-Krams brauchen.
Ich habe eine Root-CA erstellt, von der ich ein Zertifikat exportieren kann.
Daraf aufbauend habe ich eine Server-CA erstellt, von der ebenfalls ein Zertifikat und eine CA chain exportieren kann.
Des weiteren habe ich auf der Server-CA ein Server Zertifikat erstellt (welches ich natürlich exportieren kann) und ich habe einen Schlüssel dazu (ebenfalls exportierbar).
So, wer braucht jetzt was. Mein Gedanke wäre ja gewesen, der Server braucht das RootCA-Zertifikat, das Serverzertifikat und den Server Schlüssel und der Client nur das RootCA-Zertifikat. Dann bekomme ich allerdings im Client die Fehlermeldung:
SSL connect attempt failederror:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Außerdem stürzt der Server ab mit der Fehlermeldung
SSL accept attempt failederror:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca
at ./server.pl line 58
SSL accept attempt failederror:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown caerror:00000000:lib(0):func(0):reason(0)
Der Server ist Multithreaded. Kann das ein Problem sein? Kann mir jemand helfen?
Server:
my $listen = new IO::Socket::SSL (
LocalPort => $port,
Proto => 'tcp',
Listen => 10,
ReuseAddr => 1,
SSL_key_file => 'certs/server_cert-key.pem',
SSL_cert_file => 'certs/server_cert-cert.pem',
SSL_use_cert => 1,
SSL_ca_file => 'certs/test_da-cacert.pem',
SSL_cipher_list => '3DES') or die "Konnte kein SSL-TCP-Server an port $port öffnen: $!\n";
Client:
[code][$sock= new IO::Socket::SSL (
PeerAddr => $server,
PeerPort => $port,
Proto => 'tcp',
Timeout => '5',
SSL_verify_mode => 0x02,
SSL_ca_file => 'certs/test_da-cacert.pem');
/code]
Datum: 27.07.2006-16:14
