Is Canonical renaming symbols in their package version of openssl, and if so for what purpose? When I compile openssl-1.0.0e.tar.gz (downloaded from openssl.org directly) from scratch I see the necessary symbol, but Python (and I) can't seem to find it in the packaged version.
Read on for more information about how I diagnosed this problem...
I am trying to compile Python 2.6.1 on Ubuntu 11.10, and get the error message above. The reason I am using this older Python is that I am trying to make my Ubuntu installation 100% compatible with a production system for development purposes.
When performing
strace -feopen make -j4 |& grep "libssl"
I see that I am using a promising file:
[pid 22614] open("/usr/lib/x86_64-linux-gnu//libssl.so", O_RDONLY) = 7
Running nm, this file has no symbols. However the .a file does have a similar one:
0000000000000030 T SSLv23_method
The package libssl1.0.0-dbg is installed via synaptic, however when I list the installed files for this package all I see is "The list of installed files is only available for installed packages" which is clearly an Ubuntu bug. So I am not sure how I am supposed to check which symbols are present in the .so.
However, I am suspicious that they have renamed SSLv2_method to SSLv23_method in any case.
How to proceed to figure out the status of Ubuntu's openssl-1.0.0?
My fix was install openssl without ssl2 support
Then install anything linked to the libraries in /usr/ssl. It works..
I was able to build Python 2.6 with SSL support on Ubuntu 12.04 with the help of the patch in this blog post.
The Ubuntu people build OpenSSL without SSLv2 support because the protocol has known security issues. So that's why you can't find
SSLv2_method
in their library even though you can find it when you compile the library yourself.Ubuntu build logs are publicly available. You can see in the oneiric-i386.openssl_1.0.0e log that the library gets configured with the
-no-ssl2
option, which disables support for SSLv2.Note that the availability of
SSLv23_method
does not mean that a client will be able to connect to a server with SSLv2. The OpenSSL documentation briefly discusses this situation: