简体   繁体   中英

Certificate Verification Error in Windows Docker container running python

I'm just starting out using python to make use of third party api's to improve workflows at our company. One API that I've been working with is for citrix sharefile (a secure, managed FTP server). I use the module that citrix had written as an example to make the api calls so there is at least one layer of abstraction between what I'm writing and the actual HTTP requests.

When I make the authentication request to get an access token from my laptop this works fine, however when I try to do the same thing from inside a docker container (windows nano with python installed) I get this back as a response:

    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)

From what I've read it could be because the container can't access the certificates on my computer but if so, how would I install an SSL certificate in the container?

Thanks, Austin

If the certificate store on the host is compatible with the guest, you can just mount it directly.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM