Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Updating openssl in python 2.7

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 
like image 243
Peter Avatar asked Sep 11 '13 22:09

Peter


People also ask

What version of OpenSSL does Python use?

Currently Python versions 3.6 to 3.9 are compatible with OpenSSL 1.0. 2, 1.1. 0, and 1.1.


1 Answers

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.

like image 181
user2434741 Avatar answered Sep 24 '22 08:09

user2434741