Ubuntu et symbole non défini pour la méthode SSLv2
est-ce que les symboles canoniques sont renommés dans leur Version package d'openssl, et si oui dans quel but? Quand je compilerai openssl-1.0.0 E. goudron.GZ (Téléchargé de openssl.org directement) de zéro je vois le symbole nécessaire, mais Python (et I) ne semble pas le trouver dans la version empaquetée.
lisez la suite pour en savoir plus sur la façon dont j'ai diagnostiqué ce problème...
j'essaie de compiler Python 2.6.1 sur Ubuntu 11.10, et d'obtenir le message d'erreur surtout. La raison pour laquelle j'utilise cet ancien Python, c'est que j'essaie de rendre mon installation Ubuntu 100% compatible 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
tournant nm, ce fichier n'a pas de symboles. Cependant, l' .un fichier a un similaire l'un:
0000000000000030 T SSLv23_method
le paquet libssl1.0.0-dbg est installé via synaptic, cependant quand j'énumère les fichiers installés pour ce paquet tout ce que je vois c'est "la liste des fichiers installés n'est disponible que pour les paquets installés" ce qui est clairement un bug Ubuntu. Je ne suis donc pas sûr de savoir comment je suis censé vérifier quels symboles sont présents dans le .alors?
cependant, je me méfie qu'ils aient renommé SSLv2_method à SSLv23_method dans tous les cas.
comment procéder pour comprendre le statut de Ubuntu openssl-1.0.0?
3 réponses
le peuple Ubuntu construisent OpenSSL sans support SSLv2 parce que le protocole a 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.
Ubuntu journaux de construction sont publiquement disponible . Vous pouvez voir dans le oneiric-i386.openssl_1.0.0 E log que la Bibliothèque est configurée avec le -no-ssl2
option, 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 D'OpenSSL brièvement traite de cette situation :
la liste des protocoles disponibles peut ensuite être limitée en utilisant le SSL_OP_NO_SSLv2, SSL_OP_NO_SSLv3, SSL_OP_NO_TLSv1 options of the SSL_CTX_set_options () or SSL_set_options (). en utilisant ces options il est possible de choisir par exemple SSLv23_server_method () et be capable de négocier avec tous les clients possibles, mais de ne permettre des protocoles comme SSLv3 ou TLSv1.
j'ai pu construire Python 2.6 avec le support de SSL sur Ubuntu 12.04 avec l'aide du patch dans ce billet de blog .
mon correctif était d'installer openssl sans support ssl2
./config --prefix=/usr enable-shared -no-ssl2
installe ensuite tout ce qui est lié aux bibliothèques dans /usr/ssl. Elle fonctionne..