You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@libcloud.apache.org by Markos Gogoulos <mg...@mist.io> on 2017/05/10 17:48:15 UTC

[dev] Docker driver TLS not working on libcloud trunk

Hi,

we are using the docker driver (on compute) on a version of libcloud before
the container refactoring and want to use the latest libcloud which has the
docker driver on containers.

However this does not work with TLS as it doesn't pass cert_file and
key_file (used in tlsverify mode of docker daemon)

The initial version of the docker driver (while it has been as a compute
driver) would use a DockerConnection which was subclassing
ConnectionUserAndKey and would pass the cert_file and key_file on the
connection object as soon as the NodeDriver was initiated. Something like

```
            self.connection.key_file = key_file
            self.connection.cert_file = cert_file
```
Also in the case of ca_cert being in use, it would also pass it as

```
            if ca_cert:
                self.connection.ca_cert = ca_cert
```

I'm not sure if that was the suggested way for achieving this (sending
cert_file/key_file) but it has been working without problems.

After the container refactoring where python requests replaced httplib, the
docker connection is still ConnectionUserAndKey and cert_file/key_file are
passed on the same way as above, however they never reach the point where
requests get them and a TLS connection is not established.

Should a CertificateConnection be used instead, to get this on a more clear
way? Or should it still be using ConnectionUserAndKey and manually set
self.connection.key_file and self.connection.cert_file only when they are
provided? I'd like to know which of the two ways is more correct so that
TLS with docker eventually works, and it is more clear what is happening
there.


Regards,
Markos