我在osx 10.11上.
(背景:
我无法让系统安装Python以使用TLS 1.1.)
从what I’ve read开始,我需要使用brew来管理Python.但我想首先升级openssl,以便Python选择合适的版本?
我做过brew更新,brew升级,brew医生(没问题)
然后我尝试了:
$brew install openssl
Warning: openssl-1.0.2h_1 already installed
$brew link openssl --force
Linking /usr/local/Cellar/openssl/1.0.2h_1...
Error: Could not symlink ../../../opt/openssl/include/openssl/aes.h
/opt/openssl/include/openssl is not writable.
$brew link --force openssl
Linking /usr/local/Cellar/openssl/1.0.2h_1... 1601 symlinks created
我不确定那些是否有效,但这就是我现在的位置:
$openssl version
OpenSSL 0.9.8zg 14 July 2015
$which openssl
/usr/local/bin/openssl
$ls -l /usr/local/bin/openssl
lrwxr-xr-x 1 greg admin 46 Jun 27 15:23 /usr/local/bin/openssl -> /usr/local/Cellar/openssl/1.0.2h_1/bin/openssl
$/usr/local/Cellar/openssl/1.0.2h_1/bin/openssl version
OpenSSL 1.0.2h 3 May 2016
所以看起来我可能已经安装了升级的openssl版本,但我准备做brew install python并且它将获得正确的openssl版本并让我使用TLS 1.1?
(这甚至是获得Python的TLS 1.1支持的正确方法吗?)
解决方法:
解决方案从源安装并绕过自制错误
brew install openssl
– >警告:openssl-1.0.2j已经安装,它只是没有链接.
brew link openssl
– >警告:拒绝链接:openssl
链接keg-only openssl意味着你可能最终链接到不安全的,
在使用Homebrew的openssl的头文件时弃用系统OpenSSL.
相反,将完整的include / library路径传递给您的编译器,例如:
-I /usr/local/opt / openssl / include -L /usr/local/opt / openssl / lib
cd ~/scratch
git clone git@github.com:openssl/openssl.git
cd openssl
sudo mkdir /usr/local/ssl
sudo chmod 777 /usr/local/ssl
./config -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib
make
make test
make install
现在,你会认为你失败了.但是每OpenSSL not getting linked with homebrew on El Capitan 10.11.6
你必须关闭你的终端然后重新打开它
现在
openssl version -a
将显示您正在使用新版本.