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"