SSLHandshakeError证书验证失败

时间:2015-07-20 15:43:19

标签: python-2.7 google-sheets ssl-certificate verify gspread

我正在尝试使用gspread和python从我的Windows桌面写入电子表格。以下代码适用于我的Mac笔记本电脑,但是当在PC上运行时,我得到一个SSLHandshakeError。我确保程序可以使用必要的文件,并尝试创建没有运气的新项目,我总是得到同样的错误。

以下是代码:

#databaseTest.py
import sys
import os
import pyodbc
import json, gspread
from oauth2client.client import SignedJwtAssertionCredentials

json_key = json.load(open('H:\MyProject-ee653db0fe92.json'))
scope = ['https://spreadsheets.google.com/feeds', 'https://docs.google.com/feeds']
credentials = SignedJwtAssertionCredentials(json_key['client_email'], json_key['private_key'], scope)
print "Authorizing..."
try:
    gc = gspread.authorize(credentials)
    input("Done")
except:
    print "SSL error"
    input("Something went wrong")
    gspread.authorize(credentials)

这是我得到的错误的最后一部分:

File "C:\Python27\lib\site-packages\httplib2\__init__.py", line 1059, in connect
raise SSLHandshakeError(e)
httplib2.SSLHandshakeError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)

2 个答案:

答案 0 :(得分:0)

事实证明,从桌面连接到电子表格的问题是由连接到的网络引起的。笔记本电脑连接到一个不同的网络,这使它能够与电子表格进行通信,但桌面网络有许多防火墙和安全措施阻止了这一点。

答案 1 :(得分:0)

我遇到了同样的问题,并调试了Google Lib,发现原因是我使用的是httplib2(0.9.2)的旧版本。当我更新到最新版本(0.14.0)时,它起作用了。

如果您已经安装了最新版本,请确保某些库没有在其依赖项中安装httplib2的旧版本。