Canonical renomme-t-il les symboles dans la version de package d’openssl et, dans l’affirmative, dans quel but? Lorsque je compile openssl-1.0.0e.tar.gz (téléchargé directement depuis openssl.org), je vois le symbole nécessaire, mais Python (et moi) ne semble pas pouvoir le trouver dans la version empaquetée.
Lisez la suite pour plus d'informations sur la façon dont j'ai diagnostiqué ce problème ...
J'essaie de compiler Python 2.6.1 sur Ubuntu 11.10 et de recevoir le message d'erreur ci-dessus. J'utilise cet ancien Python parce que je tente de rendre mon installation Ubuntu compatible à 100% avec un système de production à des fins de développement.
Lors de l'exécution
strace -feopen make -j4 |& grep "libssl"
Je vois que j'utilise un fichier prometteur:
[pid 22614] open ("/ usr/lib/x86_64-linux-gnu // libssl.so", O_RDONLY) = 7
Sous nm, ce fichier ne contient aucun symbole. Cependant, le fichier .a a un fichier similaire:
0000000000000030 T SSLv23_method
Le paquet libssl1.0.0-dbg est installé via synaptic. Cependant, lorsque je liste les fichiers installés pour ce paquet, tout ce que je vois est "La liste des fichiers installés est uniquement disponible pour les paquets installés", ce qui est clairement un bogue Ubuntu. Donc, je ne suis pas sûr de savoir comment je suis supposé vérifier quels symboles sont présents dans le fichier .so.
Cependant, je soupçonne qu'ils ont renommé SSLv2_method en SSLv23_method dans tous les cas.
Comment faire pour déterminer le statut de la solution openssl-1.0.0 d'Ubuntu?
Les personnes Ubuntu construisent OpenSSL sans support SSLv2 car le protocole a des problèmes de sécurité connus . C'est pourquoi vous ne pouvez pas trouver SSLv2_method
dans leur bibliothèque même si vous pouvez le trouver lorsque vous compilez la bibliothèque vous-même.
Les journaux de construction Ubuntu sont publiquement disponibles disponible . Vous pouvez voir dans oneiric-i386.openssl_1.0.0e log que la bibliothèque est configurée avec l'option -no-ssl2
, qui désactive le support de SSLv2.
./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]
Notez que la disponibilité de SSLv23_method
ne signifie pas qu'un client pourra se connecter à un serveur avec SSLv2. La documentation OpenSSL brièvement discute de cette situation :
La liste des protocoles disponibles peut ensuite être limitée à l’aide du fichier Options SSL_OP_NO_SSLv2, SSL_OP_NO_SSLv3, SSL_OP_NO_TLSv1 du fichier Fonctions SSL_CTX_set_options () ou SSL_set_options (). Utilisation de ceux-ci options il est possible de choisir par exemple SSLv23_server_method () et soyez capable de négocier avec tous les clients possibles, mais en autorisant uniquement les plus récents protocoles tels que SSLv3 ou TLSv1.
J'ai été capable de construire Python 2.6 avec le support SSL sur Ubuntu 12.04 avec l'aide du correctif dans cet article de blog .
Mon correctif était installer openssl sans support ssl2
./config --prefix=/usr enable-shared -no-ssl2
Ensuite, installez tout ce qui est lié aux bibliothèques dans/usr/ssl. Ça marche..