Python wsgi:ssl-错误无法连接到 HTTPS URL 因为 SSL 模块不可用

Python wsgi:ssl-error Can't connect to HTTPS URL because the SSL module is not available

我刚刚从 Amazon ec2 实例迁移到 DigitalOcean Droplet。 在我 运行 配置我的 python 应用程序、WSGI 和 apache2 时遇到 SSL 问题之前,一切似乎都工作正常。

水滴:Ubuntu 16.04 Python版本:2.7.12

虚拟主机文件

WSGISocketPrefix /var/run/wsgi                                                           
<VirtualHost *:80>                                                                       
ServerName c123456.com                                                               
#translatr.varunmalhotra.xyz                                                         

#DocumentRoot /var/www/html                                                          
#ErrorDocument 404 /notFound404.html                                                 
ErrorLog /var/log/translatr.error.log                                                
CustomLog /var/log/translatr.access.log combined                                     

WSGIDaemonProcess translatrapp python-path=/var/www/html/translatr:/var/www/html/translatr/ENV/lib/python2.7/site-packages                                                    
WSGIScriptAlias / /var/www/html/translatr/translatrapp.wsgi                          

<Directory /var/www/html/translatr>                                                  
    WSGIProcessGroup translatrapp                                                    
    WSGIApplicationGroup %{GLOBAL}                                                   
    Order deny,allow                                                                 
    Allow from all                                                                   
</Directory>                                                                         


```

我的应用程序使用 python requests 模块发出 GET 请求。 请求 return 500 并且当我检查我的日志时,我可以看到

[Sat Jan 28 10:46:23.754636 2017] [wsgi:error] [pid 6627:tid 139754554279680]     request
 = requests.get(link, headers=agents, verify=False)                                      
[Sat Jan 28 10:46:23.754641 2017] [wsgi:error] [pid 6627:tid 139754554279680]   File "/va
r/www/html/translatr/ENV/lib/python2.7/site-packages/requests/api.py", line 69, in get   
[Sat Jan 28 10:46:23.754645 2017] [wsgi:error] [pid 6627:tid 139754554279680]     return 
request('get', url, params=params, **kwargs)                                             
[Sat Jan 28 10:46:23.754650 2017] [wsgi:error] [pid 6627:tid 139754554279680]   File "/va
r/www/html/translatr/ENV/lib/python2.7/site-packages/requests/api.py", line 50, in reques
t                                                                                        
[Sat Jan 28 10:46:23.754655 2017] [wsgi:error] [pid 6627:tid 139754554279680]     respons
e = session.request(method=method, url=url, **kwargs)                                    
[Sat Jan 28 10:46:23.754659 2017] [wsgi:error] [pid 6627:tid 139754554279680]   File "/va
r/www/html/translatr/ENV/lib/python2.7/site-packages/requests/sessions.py", line 468, in 
request                                                                                  
[Sat Jan 28 10:46:23.754664 2017] [wsgi:error] [pid 6627:tid 139754554279680]     resp = 
self.send(prep, **send_kwargs)                                                           
[Sat Jan 28 10:46:23.754669 2017] [wsgi:error] [pid 6627:tid 139754554279680]   File "/va
r/www/html/translatr/ENV/lib/python2.7/site-packages/requests/sessions.py", line 597, in 
send                                                                                     
[Sat Jan 28 10:46:23.754673 2017] [wsgi:error] [pid 6627:tid 139754554279680]     history
 = [resp for resp in gen] if allow_redirects else []                                     
[Sat Jan 28 10:46:23.754678 2017] [wsgi:error] [pid 6627:tid 139754554279680]   File "/va
r/www/html/translatr/ENV/lib/python2.7/site-packages/requests/sessions.py", line 195, in 
resolve_redirects                                                                        
[Sat Jan 28 10:46:23.754683 2017] [wsgi:error] [pid 6627:tid 139754554279680]     **adapt
er_kwargs                                                                                
[Sat Jan 28 10:46:23.754687 2017] [wsgi:error] [pid 6627:tid 139754554279680]   File "/va
r/www/html/translatr/ENV/lib/python2.7/site-packages/requests/sessions.py", line 576, in 
send                                                                                     
[Sat Jan 28 10:46:23.754692 2017] [wsgi:error] [pid 6627:tid 139754554279680]     r = ada
pter.send(request, **kwargs)                                                             
[Sat Jan 28 10:46:23.754697 2017] [wsgi:error] [pid 6627:tid 139754554279680]   File "/va
r/www/html/translatr/ENV/lib/python2.7/site-packages/requests/adapters.py", line 433, in 
send                                                                                     
[Sat Jan 28 10:46:23.754702 2017] [wsgi:error] [pid 6627:tid 139754554279680]     raise S
SLError(e, request=request)                                                              │
[Sat Jan 28 10:46:23.754706 2017] [wsgi:error] [pid 6627:tid 139754554279680] SSLError: C│
an't connect to HTTPS URL because the SSL module is not available.

我搜索了很多。 我试过安装 openssl,其他 conf,但真的很沮丧。 我不知道它在 Amazon ec2 中如何流畅运行,但在 Droplet 中却不流畅。

如能提供正确方向的帮助,我们将不胜感激。谢谢

我认为我安装的 python 版本有问题。安装了多个 python 版本,或者构建未正确构建。我在没有安装 pythonUbuntu 16.04 digitalOcean machine 上。所以我不得不手动安装它。我遵循了 https://askubuntu.com/questions/101591/how-do-i-install-python-2-7-2-on-ubuntu

上给出的答案

但是,似乎没有任何效果。

最后,我创建了一台全新的机器,但这次是 Ubuntu 14.04,它已经安装了 python。当我安装依赖项并部署我的 Flask 应用程序时,它工作正常。

已将 Ubuntu 16.04(没有 python)更改为 Ubuntu 14.04(安装了 python)。

如果您从源安装 Python,则必须重新运行

./configure
make
sudo checkinstall

安装 openssl 之后(我假设通过 sudo apt install openssl)。

安装opensslopenssl-devel后,不需要再配置python

运行 以下命令:

make 
make install

我玩得很开心(Ubuntu 14.04,Python 3.7),但最终还是成功了:

apt install libssl libssl-dev
# compile Python from source:
wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz
tar -xf Python-3.7.5.tgz
./configure --with-openssl=/openssl/  # make sure that this is where x509_vfy.h sits
make && make altinstall