运行python的Windows Docker容器中的证书验证错误

时间:2017-06-22 08:03:30

标签: python windows docker ssl-certificate sharefile

我刚刚开始使用python来利用第三方api来改善我们公司的工作流程。我一直在使用的一个API是Citrix共享文件(一个安全的托管FTP服务器)。我使用citrix编写的模块作为示例来进行api调用,因此在我编写的内容和实际的HTTP请求之间至少有一层抽象。

当我从我的笔记本电脑上获取访问令牌的身份验证请求时,这工作正常,但是当我尝试从docker容器(安装了python的windows nano)中执行相同的操作时,我将其作为响应返回:

    Traceback (most recent call last):
  File "main.py", line 38, in <module>
    sharefile = pysharefile.authenticate(hostname,sf_client_id,sf_client_secret,sf_username,sf_password)
  File "C:\Python\lib\site-packages\pysharefile\pysharefile.py", line 42, in authenticate
    http.request('POST', uri_path, urllib.parse.urlencode(params), headers=headers)
  File "C:\Python\lib\http\client.py", line 1239, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "C:\Python\lib\http\client.py", line 1285, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "C:\Python\lib\http\client.py", line 1234, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "C:\Python\lib\http\client.py", line 1026, in _send_output
    self.send(msg)
  File "C:\Python\lib\http\client.py", line 964, in send
    self.connect()
  File "C:\Python\lib\http\client.py", line 1400, in connect
    server_hostname=server_hostname)
  File "C:\Python\lib\ssl.py", line 401, in wrap_socket
    _context=self, _session=session)
  File "C:\Python\lib\ssl.py", line 808, in __init__
    self.do_handshake()
  File "C:\Python\lib\ssl.py", line 1061, in do_handshake
    self._sslobj.do_handshake()
  File "C:\Python\lib\ssl.py", line 683, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)

从我读过的内容可能是因为容器无法访问我的计算机上的证书,但如果是这样,我将如何在容器中安装SSL证书?

谢谢, 奥斯汀

1 个答案:

答案 0 :(得分:0)

如果主机上的证书存储与guest虚拟机兼容,则可以直接挂载它。

docker run -v / host / path / to / certs:/ container / path / to / certs -d IMAGE_ID“update-ca-certificates”