it-swarm.dev

Ubuntu und undefined Symbol für SSLv2_method

Werden die Symbole von Canonical in ihrer Paketversion von openssl umbenannt, und wenn ja, zu welchem ​​Zweck? Wenn ich openssl-1.0.0e.tar.gz (direkt von openssl.org direkt heruntergeladen) kompiliere, sehe ich das erforderliche Symbol, aber Python (und ich) können es in der Paketversion nicht finden. 

Lesen Sie weiter für weitere Informationen darüber, wie ich dieses Problem diagnostiziert habe ...

Ich versuche, Python 2.6.1 unter Ubuntu 11.10 zu kompilieren und die obige Fehlermeldung zu erhalten. Der Grund, warum ich diesen älteren Python verwende, ist, dass ich versuche, meine Ubuntu-Installation zu Entwicklungszwecken 100% kompatibel mit einem Produktionssystem zu machen.

Beim Auftreten

strace -feopen make -j4 |& grep "libssl"

Ich sehe, dass ich eine vielversprechende Datei verwende: 

[pid 22614] open ("/ usr/lib/x86_64-linux-gnu // libssl.so", O_RDONLY) = 7

Wenn Sie nm ausführen, enthält diese Datei keine Symbole. Die .a-Datei hat jedoch eine ähnliche:

0000000000000030 T SSLv23_Methode

Das Paket libssl1.0.0-dbg wird über synaptic installiert. Wenn ich jedoch die installierten Dateien für dieses Paket auflisten, sehe ich nur "Die Liste der installierten Dateien ist nur für installierte Pakete verfügbar". Dies ist eindeutig ein Ubuntu-Fehler. Ich bin mir also nicht sicher, wie ich prüfen soll, welche Symbole in der .so vorhanden sind. 

Ich habe jedoch den Verdacht, dass sie auf jeden Fall SSLv2_method in SSLv23_method umbenannt haben.

Wie kann man den Status von OpenSL-1.0.0 von Ubuntu ermitteln? 

24
SetJmp

Die Ubuntu-Leute bauen OpenSSL ohne SSLv2-Unterstützung, da das Protokoll bekannte Sicherheitsprobleme hat. Deshalb können Sie SSLv2_method in ihrer Bibliothek nicht finden, obwohl Sie es finden können, wenn Sie die Bibliothek selbst kompilieren.

Ubuntu-Build-Protokolle sind öffentlich verfügbar . Im Protokoll oneiric-i386.openssl_1.0.0e können Sie sehen, dass die Bibliothek mit der Option -no-ssl2 konfiguriert wird, wodurch die Unterstützung für SSLv2 deaktiviert wird.

./Configure --prefix=/usr --openssldir=/usr/lib/ssl --libdir=lib/i386-linux-gnu no-idea no-mdc2 no-rc5 zlib  enable-tlsext no-ssl2 debian-i386
Configuring for debian-i386
    no-gmp          [default]  OPENSSL_NO_GMP (skip dir)
    no-idea         [option]   OPENSSL_NO_IDEA (skip dir)
    no-jpake        [experimental] OPENSSL_NO_JPAKE (skip dir)
    no-krb5         [krb5-flavor not specified] OPENSSL_NO_KRB5
    no-md2          [default]  OPENSSL_NO_MD2 (skip dir)
    no-mdc2         [option]   OPENSSL_NO_MDC2 (skip dir)
    no-rc5          [option]   OPENSSL_NO_RC5 (skip dir)
    no-rfc3779      [default]  OPENSSL_NO_RFC3779 (skip dir)
    no-shared       [default] 
    no-ssl2         [option]   OPENSSL_NO_SSL2 (skip dir)
    no-store        [experimental] OPENSSL_NO_STORE (skip dir)
    no-zlib-dynamic [default] 

Beachten Sie, dass die Verfügbarkeit von SSLv23_method nicht bedeutet, dass ein Client eine Verbindung zu einem Server mit SSLv2 herstellen kann. Die OpenSSL-Dokumentation kurz bespricht diese Situation :

Die Liste der verfügbaren Protokolle kann später mithilfe der Optionen SSL_OP_NO_SSLv2, SSL_OP_NO_SSLv3, SSL_OP_NO_TLSv1 der Funktionen SSL_CTX_set_options () oder SSL_set_options () eingeschränkt werden. Mit diesen Optionen Können Sie z. SSLv23_server_method () und In der Lage sein, mit allen möglichen Clients zu verhandeln, jedoch nur neuere Protokolle wie SSLv3 oder TLSv1 zuzulassen.

26
indiv

Ich konnte Python 2.6 mit SSL-Unterstützung unter Ubuntu 12.04 mithilfe des Patches in diesem Blogbeitrag erstellen.

3
Carl Meyer

Mein Fix war install openssl ohne ssl2-Unterstützung

./config --prefix=/usr enable-shared -no-ssl2

Dann installieren Sie alles, was mit den Bibliotheken in/usr/ssl verlinkt ist. Es klappt..

0