如何在Mac上更新OpenSSL?

时间:2016-07-19 20:27:43

标签: python c macos ssl openssl

我需要确保我有1.0.1或更高版本的OpenSSL版本才能根据this documentation连接到Salesforce API。

根据this question,我可以执行以下步骤(我已成功完成)

  1. brew update
  2. brew install openssl
  3. brew link --force openssl
  4. 当我运行openssl version -a时,我得到以下内容:

    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"
    

    然而,当我运行python -c "import ssl; print ssl.OPENSSL_VERSION"时,我得到以下内容:

    OpenSSL 0.9.8zh 14 Jan 2016
    

    我从我的计算机收到混合信号,但我的salesforce模块仍无法正常工作,所以我知道OpenSSL在我的计算机上没有完全更新。

    我还应该提到我也尝试过:

    sudo port upgrade openssl
    

    Port似乎有效,但是当我运行python -c "import ssl; print ssl.OPENSSL_VERSION"时,我仍然可以使用#34; OpenSSL 0.9.8zh"

    还有其他方法可以更新OpenSSL吗?

2 个答案:

答案 0 :(得分:6)

我认为这是您使用的Python版本和$PATH变量的多部分问题。

首先在终端中使用此命令检查您在哪里寻找Python:

which python

它应输出如下内容:/usr/local/bin/python

然后检查您已设置的路径。

echo $PATH

可能你会看到类似的东西:

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

问题可能是当您在终端中输入python时绑定到默认值的python版本不是具有现代版本openssl的版本。

换句话说:

openssl version -a

检查openssl是否与

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

要解决此问题,您可以尝试修改$PATH变量。

我建议您通过编辑类似~/.bash_profile文件的内容来执行此操作。您可以添加类似这样的内容来指定要使用的不同Python二进制文件:

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

将此文件放在.bash_profile文件的末尾,然后无论何时使用bash,它都应在/usr/local/bin目录中查找Python,然后再查找其他文件。请记住,这可能也会影响其他程序查找Python(或其他二进制文件)的位置。

答案 1 :(得分:1)

@ fernando的答案有正确的理论,但他对下一步的建议对我不起作用,因为/usr/local/bin已经在我的$ PATH中首先出现了。以下是我修复我的方法:

brew info python的回复中,我看到了:

==> Caveats This formula installs a python2 executable to /usr/local/bin. If you wish to have this formula's python executable in your PATH then add the following to ~/.bash_profile: export PATH="/usr/local/opt/python/libexec/bin:$PATH"

我在最后一行添加了~/.bash_profile,打开了一个新的终端窗口,然后就可以了。