openSSL verwenden

Post Reply
Message
Author
pcAlko
Posts: 70
Joined: 14. May 2007 19:27

openSSL verwenden

#1 Post by pcAlko »

Hallo Leute!

Ich habe einen server + client geschrieben, den ich jetzt mit openSSL Unterstützung erweitern möchte.
Beim Googeln bin ich auf den IBM-Link http://www.ibm.com/developerworks/linux ... enssl.html gestossen.

Mein Problem fangt aber schon an wenn ich nur die Initialisierung übersetzen möchte.
Die includierten header bio.h ssl.h und err.h machen keine Probleme
er compiliert auch ohne Probleme

Code: Select all

SSL_load_error_strings();
ERR_load_BIO_strings();
OpenSSL_add_all_algorithms();
Aber beim Linken findet er keine Referenzen.

ich habe beim make -lBIO versucht
laut Tutorial steht:
> OpenSSL uses an abstraction library called BIO

aber diese Library findet er mir nirgends
unter apt-cache search bio.so
findet er nur shared objects für Perl

mein Englisch ist aber auch nicht das Beste
vielleicht habe ich im Tutorial etwas überlesen!

kann mir irgendwer weiterhelfen?

8) pcAlko

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#2 Post by Janka »

Die Library die du einbinden musst, ist "libssl", wie man an

Code: Select all

$ objdump -T /usr/lib/libssl.so|grep BIO
00000000      DF *UND*  00000012              BIO_s_socket
00000000      DF *UND*  000000ca              BIO_free
00000000      DF *UND*  0000003b              BIO_free_all
00000000      DF *UND*  000000fd              BIO_ctrl
00000000      DF *UND*  00000017              BIO_copy_next_retry
00000000      DF *UND*  00000008              BIO_get_retry_reason
00000000      DF *UND*  00000088              BIO_new
00033350 g    DF .text  00000012  Base        BIO_f_ssl
00000000      DF *UND*  00000126              BIO_puts
00000000      DF *UND*  00000012              BIO_f_buffer
00000000      DF *UND*  0000005b              BIO_push
00000000      DF *UND*  0000003c              BIO_snprintf
00033c4c g    DF .text  00000071  Base        BIO_ssl_copy_session_id
00033d42 g    DF .text  0000005f  Base        BIO_new_ssl_connect
00033cbd g    DF .text  00000085  Base        BIO_new_ssl
00000000      DF *UND*  00000150              BIO_write
00000000      DF *UND*  00000034              BIO_printf
00000000      DF *UND*  000000fa              BIO_callback_ctrl
00000000      DF *UND*  0000002f              BIO_find_type
00000000      DF *UND*  00000012              BIO_s_file
00000000      DF *UND*  00000132              BIO_read
00033c10 g    DF .text  0000003c  Base        BIO_ssl_shutdown
00000000      DF *UND*  0000006e              BIO_pop
00033da1 g    DF .text  00000073  Base        BIO_new_buffer_ssl_connect
00000000      DF *UND*  00000040              BIO_int_ctrl
00000000      DF *UND*  00000012              BIO_s_connect
$
leicht erkennen kann. Also statt -lBIO -lssl schreiben und gut ist.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

pcAlko
Posts: 70
Joined: 14. May 2007 19:27

#3 Post by pcAlko »

Hallo Janka!

Danke hat super funktioniert.
Bin erst jetzt dazu gekommen die verschlüsselung in angriff zu nehmen.

Nur hab ich jetzt ein anderes Problem
vielleicht kennst Du dich oder jemand der das liest damit aus.

Das Compilen und Linken hat super funktioniert
nur nach dem ausführen bekom' ich einen Segmentation Fehler.

Code: Select all

    SSL_CTX * ctx;

    ERR_load_BIO_strings();
    SSL_load_error_strings();
    OpenSSL_add_all_algorithms();

    /* Set up the SSL context */

    ctx = SSL_CTX_new(SSLv23_client_method());

    /* Load the trust store */
    if(! SSL_CTX_load_verify_locations(ctx, "TrustStore.pem", NULL))
    {
        fprintf(stderr, "Error loading trust store\n");
        ERR_print_errors_fp(stderr);
        SSL_CTX_free(ctx);
        return 0;
    }
Beim Debuggem bleibt er mir beim letzten Befehl SSL_CTX_load_verify_locations einfach stehen.
Wenn ich den Eclipse Debugger beende bekomme ich folgende Ausgabe

Stopped due to shared library event
No source file named Client.cpp.
No source file named Client.cpp.
No source file named main.cpp.
No source file named main.cpp.
No source file named Thread.cpp.
kill

diese Files existieren aber im Projekt nicht
hataber warscheinlich auch nichts zu bedeuten.

hast Du da irgend eine Idee
oder vielleicht sonst irgend jemand????????

oder wie kann ich da den Fehler am besten finden.

8) pcAlko

KayFr72
Posts: 1
Joined: 21. Aug 2010 15:57

#4 Post by KayFr72 »

Hallo pcAlco!

Du hast den SSL_library_init() vor den Befehlen vergessen:

so muss es heißen!

Code: Select all

SSL_library_init()

SSL_CTX_new(SSLv23_client_method())
Gruß KayFr72

Post Reply