python-caldavclient icon indicating copy to clipboard operation
python-caldavclient copied to clipboard

Custom TLS certificate

Open slavkoja opened this issue 7 years ago • 1 comments

I want to try your caldav client. I have own radicale server for years, with own CA and TLS certificate signed by this CA. The radicale is accessible via nginx reverse proxy, which redirects any HTTP requests to HTTPS.

When i try connect to it by your client, i got TLS check error:

Traceback (most recent call last):
  File "C:\Python35\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "C:\Python35\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 345, in _make_request
    self._validate_conn(conn)
  File "C:\Python35\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 844, in _validate_conn
    conn.connect()
  File "C:\Python35\lib\site-packages\requests\packages\urllib3\connection.py", line 326, in connect
    ssl_context=context)
  File "C:\Python35\lib\site-packages\requests\packages\urllib3\util\ssl_.py", line 324, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "C:\Python35\lib\ssl.py", line 385, in wrap_socket
    _context=self)
  File "C:\Python35\lib\ssl.py", line 760, in __init__
    self.do_handshake()
  File "C:\Python35\lib\ssl.py", line 996, in do_handshake
    self._sslobj.do_handshake()
  File "C:\Python35\lib\ssl.py", line 641, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:720)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python35\lib\site-packages\requests\adapters.py", line 423, in send
    timeout=timeout
  File "C:\Python35\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 630, in urlopen
    raise SSLError(e)
requests.packages.urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:720)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "mojtest.py", line 18, in <module>
    principal = client.getPrincipal()
  File "C:\Users\xxx\Documents\python\caldav\python-caldavclient\caldavclient\caldavclient.py", line 15, in getPrincipal
    self.updatePrincipal()
  File "C:\Users\xxx\Documents\python\caldav\python-caldavclient\caldavclient\caldavclient.py", line 23, in updatePrincipal
    auth = self.auth
  File "C:\Users\xxx\Documents\python\caldav\python-caldavclient\caldavclient\util.py", line 22, in requestData
    auth = auth
  File "C:\Python35\lib\site-packages\requests\api.py", line 56, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Python35\lib\site-packages\requests\sessions.py", line 488, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Python35\lib\site-packages\requests\sessions.py", line 609, in send
    r = adapter.send(request, **kwargs)
  File "C:\Python35\lib\site-packages\requests\adapters.py", line 497, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:720)

This error is expected due custom certificate, but there is no way to disable certificate check or to provide custom certificate file for this check in your client. Please implement this.

slavkoja avatar Mar 22 '17 08:03 slavkoja