Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
197 views
in Technique[技术] by (71.8m points)

python - How to update OpenSSL on mac?

I need to ensure that I have OpenSSL version of 1.0.1 or greater to connect to the Salesforce API according to this documentation.

According to this question, I can do the following steps (which I've completed successfully)

  1. brew update
  2. brew install openssl
  3. brew link --force openssl

When I run openssl version -a, I get the following:

OpenSSL 1.0.2h  3 May 2016
built on: reproducible build, date unspecified
platform: darwin64-x86_64-cc
options:  bn(64,64) rc4(ptr,int) des(idx,cisc,16,int) idea(int) blowfish(idx) 
compiler: /usr/bin/clang -I. -I.. -I../include  -fPIC -fno-common -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -arch x86_64 -O3 -DL_ENDIAN -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/opt/local/etc/openssl"

However, when I run python -c "import ssl; print ssl.OPENSSL_VERSION", I get the following:

OpenSSL 0.9.8zh 14 Jan 2016

I'm getting mixed signals from my computer, but my salesforce module is still not working, so I know OpenSSL is not updated completely on my computer.

I should also mention that I've also tried:

sudo port upgrade openssl

Port seemed to have worked, but when I run python -c "import ssl; print ssl.OPENSSL_VERSION" I still get that I'm on "OpenSSL 0.9.8zh"

Is there another way to update OpenSSL?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I think this is a multi-part issue with the versions of Python you are using and your $PATH variable.

First check where you're looking for Python by using this command in the terminal:

which python

It should output something like this: /usr/local/bin/python

Then check for the path that you have setup.

echo $PATH

Likely you're seeing something like:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/username/anaconda/bin:/usr/bin:/bin:/usr/sbin:/sbin

The issue is probably that the version of python tied to your default when you enter python in your terminal is not one that has the modern version of openssl.

In other words:

openssl version -a

Is checking for openssl somewhere different than

python -c "import ssl; print ssl.OPENSSL_VERSION"

To fix this, you might try editing your $PATH variable.

I suggest doing this by editing something like your ~/.bash_profile file. You can add something like this to specify a different Python binary to use:

export PATH="/usr/local/bin:$PATH"

Plop this on the end of your .bash_profile file and then whenever you're using bash it should look for Python in the /usr/local/bin directory before looking elsewhere. Keep in mind that this might also affect places that other programs look for Python (or other binaries).


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...