wondering if someone may please explain how openssl works in python2.7. I'm not sure if python got its own openssl or picks it up from local machine/env?
let me explain: (if I do this in Python)
>>> import ssl >>> ssl.OPENSSL_VERSION 'OpenSSL 0.9.8x 10 May 2012'
(In terminal)
$ openssl version OpenSSL 0.9.8x 10 May 2012 $ which openssl /usr/bin/openssl
now I updated openssl (downloaded .)
$ cd openssl-1.0.1c $ ./Configure darwin64-x86_64-cc --prefix=/usr --openssldir=/opt/local/etc/openssl shared $ make $ sudo make install
this created separate director(as specified), so I copied it to the old path
cp -f /usr/local/ssl/bin/openssl /usr/bin/openssl
now in terminal openssl version has been updated but not from python!
$ openssl version OpenSSL 1.0.1c 10 May 2012
I did noticed that .dylib is still pointing to old version, how can I change this?
$ ls -l /usr/lib/*ssl* -rwxr-xr-x 1 root wheel 411680 Jul 17 2012 /usr/lib/libssl.0.9.7.dylib -rwxr-xr-x 1 root wheel 602800 May 24 03:43 /usr/lib/libssl.0.9.8.dylib -rwxr-xr-x 1 root wheel 390908 Sep 9 17:37 /usr/lib/libssl.1.0.0.dylib lrwxr-xr-x 1 root wheel 18 Jul 17 2012 /usr/lib/libssl.dylib -> libssl.0.9.8.dylib
Update: I changed the link still got old version at python.
$ ls -l /usr/lib/*ssl* -rwxr-xr-x 1 root wheel 411680 Jul 17 2012 /usr/lib/libssl.0.9.7.dylib -rwxr-xr-x 1 root wheel 602800 May 24 03:43 /usr/lib/libssl.0.9.8.dylib -rwxr-xr-x 1 root wheel 390908 Sep 9 17:37 /usr/lib/libssl.1.0.0.dylib lrwxr-xr-x 1 root wheel 18 Sep 11 15:47 /usr/lib/libssl.dylib -> libssl.1.0.0.dylib
Currently Python versions 3.6 to 3.9 are compatible with OpenSSL 1.0. 2, 1.1. 0, and 1.1.
Please refer to http://rkulla.blogspot.kr/2014/03/the-path-to-homebrew.html
After upgrading openssl to 1.0.1j by homebrew on MAC, but system python still referred to old version 0.9.8. It turned out the python referred to openssl. So I have installed new python with brewed openssl and finished this issue on Mac, not yet Ubuntu.
On Mac OS X version 10.10 and system python version 2.7.6, my procedure is as follows:
$ brew update $ brew install openssl
Then you can see openssl version 1.0.1j.
$ brew link openssl --force $ brew install python --with-brewed-openssl
You have to install new python with brewed openssl. Then, you can see /usr/local/Cellar/python/2.7.8_2/bin/python.
$ sudo ln -s /usr/local/Cellar/python/2.7.8_2/bin/python /usr/local/bin/python
Of course, /usr/local/* should be owned by $USER, not root, which is told by Ryan, but I used 'sudo'. And, before this instruction, I didn't have /usr/local/bin/python. After this instruction, you can use python version 2.7.8 not 2.7.6.
Finally, you can see as belows;
$ python --version Python 2.7.8 $ python -c "import ssl; print ssl.OPENSSL_VERSION" OpenSSL 1.0.1j 15 Oct 2014
Till now, I'm working on it on Ubuntu 12.04. If I have a solution for Ubuntu 12.04, then I will update my answer. I hope this procedure help you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With