Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python请求的SSLError_Python_Macos_Python 2.7_Ssl - Fatal编程技术网

使用python请求的SSLError

使用python请求的SSLError,python,macos,python-2.7,ssl,Python,Macos,Python 2.7,Ssl,我尝试执行以下命令中的第一个命令: 但我收到以下错误消息: Traceback (most recent call last): File "./main.py", line 16, in <module> requests.get('https://github.com/timeline.json') File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

我尝试执行以下命令中的第一个命令:

但我收到以下错误消息:

Traceback (most recent call last):
  File "./main.py", line 16, in <module>
    requests.get('https://github.com/timeline.json')
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/api.py", line 55, in get
    return request('get', url, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/sessions.py", line 383, in request
    resp = self.send(prep, **send_kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/sessions.py", line 486, in send
    r = adapter.send(request, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/adapters.py", line 385, in send
    raise SSLError(e)
requests.exceptions.SSLError: [Errno 1] _ssl.c:499: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
回溯(最近一次呼叫最后一次):
文件“/main.py”,第16行,在
请求。获取('https://github.com/timeline.json')
get中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/requests/api.py”,第55行
返回请求('get',url,**kwargs)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/requests/api.py”,请求中的第44行
return session.request(method=method,url=url,**kwargs)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/requests/sessions.py”,请求中第383行
resp=自我发送(准备,**发送)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/requests/sessions.py”,第486行,在send中
r=适配器.send(请求,**kwargs)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/requests/adapters.py”,第385行,在send中
升起SSLError(e)
requests.exceptions.SSLError:[Errno 1]\u ssl.c:499:错误:14090086:ssl例程:SSL3\u GET\u SERVER\u证书:证书验证失败
我对SSL证书是完全陌生的,但我怀疑这与Python在错误的地方寻找有关。我下载了Python2.7,并将其用作我的默认Python(我运行的是MacOSX10.6(SnowLeopard),它是Python2.6附带的)。在我修复路径并创建符号链接之前,我的Mac在寻找Python内容的错误位置时遇到了很多麻烦,但我想知道是否还有其他原因与导致此SSL错误的升级有关?或者它可能与此无关

我曾尝试搜索类似的内容,并阅读了一些人的建议,只是为了在
requests.get()
中添加参数
verify=False
,但我不想这样做,因为我认为这样可以避免真正的问题。谢谢你帮了一个新手。

你可以试试这个

验证证书的路径:

>>请求。获取('https://whatever.com,verify='/path/to/certfile')

>>请求。获取('https://whatever.com,cert=('/path/server.crt','/path/key'))


请检查您是否有fle/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/cacert.pem。这是它应该用于验证的CA文件。@SteffenUllrich,是的,它在那里。然后您可以(使用dtruss?)检查它是否被使用,或者它是否正在其他地方寻找cacert.pem文件。如果使用它,请确保文件中有“DigiCert高保证EV根CA”(sha-1 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25),因为这是签署github.com证书的CA。当然,如果你在一个进行SSL拦截的防火墙后面,所有这些都是无用的,因为这样你就无法获得原始证书。@SteffenUllrich这里也有同样的问题。我去掉了一个杀毒软件,以防它阻止任何东西。奇怪的是,当我做一个“openssl s_客户端-connectsomedomain.com:443-CAfile cert.pem”时,它工作正常。而且,我听从了你的建议,在命令行上尝试了这个。“dtruss-apython-c”导入请求;获取(');"". 结果是,druss输出中没有太多内容,python内部没有任何系统调用。我不知道在MacOSX上进行系统调用跟踪的合适工具,但在BSD中,这是ktrace和LinuxStrace。如果希望从python脚本获取系统调用,可能还有一些附加选项。至于openssl:它是否对来自请求库的cacert.pem起作用,即它是否不仅连接,而且显式地给出
验证返回代码:0(确定)
Traceback (most recent call last):
  File "./main.py", line 16, in <module>
    requests.get('https://github.com/timeline.json')
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/api.py", line 55, in get
    return request('get', url, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/sessions.py", line 383, in request
    resp = self.send(prep, **send_kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/sessions.py", line 486, in send
    r = adapter.send(request, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/adapters.py", line 385, in send
    raise SSLError(e)
requests.exceptions.SSLError: [Errno 1] _ssl.c:499: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed