2017-05-18 10 views
0

내가 파이썬 2.7.6를 사용하고 위반 발생했습니다. 서버의 SSL 인증서가 업데이트 된 후 2 일 전에 시작됩니다.urlfetch.UrlfetchException : _ssl.c : 510 : EOF 우분투</p> <p>내가 원격 서버에 데이터를 게시하는 <a href="https://pypi.python.org/pypi/urlfetch" rel="nofollow noreferrer"><code>urlfetch</code> (1.0.2)</a>를 사용할 때이 오류가 점점 오전에 프로토콜

비슷한 문제가 다른 파이썬 패키지 request에보고되었습니다. 이 솔루션은

pip install --force-reinstall requests[security] 

을 실행하여 일부 종속성을 업데이트하는 것입니다하지만 난 단지이

Requirement already satisfied: requests[security] in /usr/lib/python2.7/dist-packages 
    requests 2.2.1 does not provide the extra 'security' 

아무것도 다운로드하고 설치 될 것 같다되었다.

일부 게시물이 암호화하는 데 관련 제안 (https://github.com/kennethreitz/requests/issues/3608#issuecomment-250681069)

openssl s_client -connect www.example.com:443 
CONNECTED(00000003) 
140353237063328:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:177: 
--- 
no peer certificate available 
--- 
No client certificate CA names sent 
--- 
SSL handshake has read 0 bytes and written 305 bytes 
--- 
New, (NONE), Cipher is (NONE) 
Secure Renegotiation IS NOT supported 
Compression: NONE 
Expansion: NONE 
--- 

는 정상 보입니까? 문제를 해결하기 위해 할 수있는 일이 있습니까?

대상 서버가 Google App Engine에 있습니다. 새 SSL 인증서는 vip을 지원하지 않습니다.

우분투 버전 정보 :

NAME="Ubuntu" 
VERSION="14.04.2 LTS, Trusty Tahr" 
ID=ubuntu 
ID_LIKE=debian 
PRETTY_NAME="Ubuntu 14.04.2 LTS" 
VERSION_ID="14.04" 
HOME_URL="http://www.ubuntu.com/" 
SUPPORT_URL="http://help.ubuntu.com/" 
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/" 

답변

1

나의 첫번째 선택은 ssl.py을 원숭이 - 패치하여 문제를 해결하기 위해 this answer를 사용하는 것이 었습니다.

import ssl 
from functools import wraps 
def sslwrap(func): 
    @wraps(func) 
    def bar(*args, **kw): 
     kw['ssl_version'] = ssl.PROTOCOL_TLSv1 
     return func(*args, **kw) 
    return bar 

ssl.wrap_socket = sslwrap(ssl.wrap_socket) 

그러나 작동하지 않았습니다.

결국 파이썬을 소스에서 2.7.13으로 업그레이드하여 해결할 수 있음을 알게되었습니다. 다음 단계는 다음과 같습니다

1) 파이썬 dev에 의존

sudo apt-get install -y \ 
autotools-dev  \ 
blt-dev   \ 
bzip2    \ 
dpkg-dev   \ 
g++-multilib  \ 
gcc-multilib  \ 
libbluetooth-dev \ 
libbz2-dev   \ 
libexpat1-dev  \ 
libffi-dev   \ 
libffi6   \ 
libffi6-dbg  \ 
libgdbm-dev  \ 
libgpm2   \ 
libncursesw5-dev \ 
libreadline-dev \ 
libsqlite3-dev  \ 
libssl-dev   \ 
libtinfo-dev  \ 
mime-support  \ 
net-tools   \ 
netbase   \ 
python-crypto  \ 
python-mox3  \ 
python-pil   \ 
python-ply   \ 
quilt    \ 
tk-dev    \ 
zlib1g-dev 

2) 다운로드 소스 코드

wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz 

3) 포장을 풀고 설치

tar xfz Python-2.7.13.tgz 

4)를 구성

cd Python-2.7.13/ 
./configure --prefix /usr/local/lib/python2.7.13 --enable-ipv6 
,451,515,

5)

make 

6))

sudo make install 

7을 배포하는이 오류가 지원하지 않는 파이썬의 이전 버전에 발생 pipurlfetch 및 기타 종속

+0

또한 pyenv 또는 pythonz를 사용하여 최신 비단뱀을 설치할 수 있습니다. – duyue

2

를 설치 구축 TLS SNI (Server Name Indication) 확장. HTTPS를 사용하여 App Engine에서 호스팅되는 사이트에 연결하려면 SNI를 사용해야합니다. SNI 지원이 Python 2.7.9 이상에있는 것처럼 보입니다.

당신이의 요청 앱 엔진 애플리케이션 파이썬으로 작성된 및 SNI 지원이 필요을하는 경우 reference version 2.7.11 of the ssl library in your app.yaml file 필요하거나이 같은 문제로 실행하겠습니다.