to other information described in the above document, authorization plugins
running on a Docker daemon receive the certificate information for connecting
Docker clients.
For client authentication, create a client key and certificate signing
request:
> [!NOTE]
>
> For simplicity of the next couple of steps, you may perform this
> step on the Docker daemon's host machine as well.
```console
$ openssl genrsa -out key.pem 4096
Generating RSA private key, 4096 bit long modulus
.........................................................++
................++
e is 65537 (0x10001)
$ openssl req -subj '/CN=client' -new -key key.pem -out client.csr
```
To make the key suitable for client authentication, create a new extensions
config file:
```console
$ echo extendedKeyUsage = clientAuth > extfile-client.cnf
```
Now, generate the signed certificate:
```console
$ openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \
-CAcreateserial -out cert.pem -extfile extfile-client.cnf
Signature ok
subject=/CN=client
Getting CA Private Key
Enter pass phrase for ca-key.pem:
```
After generating `cert.pem` and `server-cert.pem` you can safely remove the
two certificate signing requests and extensions config files:
```console
$ rm -v client.csr server.csr extfile.cnf extfile-client.cnf
```
With a default `umask` of 022, your secret keys are *world-readable* and
writable for you and your group.
To protect your keys from accidental damage, remove their
write permissions. To make them only readable by you, change file modes as follows:
```console
$ chmod -v 0400 ca-key.pem key.pem server-key.pem
```
Certificates can be world-readable, but you might want to remove write access to
prevent accidental damage:
```console
$ chmod -v 0444 ca.pem server-cert.pem cert.pem
```
Now you can make the Docker daemon only accept connections from clients
providing a certificate trusted by your CA:
```console
$ dockerd \
--tlsverify \
--tlscacert=ca.pem \
--tlscert=server-cert.pem \
--tlskey=server-key.pem \
-H=0.0.0.0:2376
```
To connect to Docker and validate its certificate, provide your client keys,
certificates and trusted CA:
> [!TIP]
>
> This step should be run on your Docker client machine. As such, you
> need to copy your CA certificate, your server certificate, and your client
> certificate to that machine.
> [!NOTE]
>
> Replace all instances of `$HOST` in the following example with the
> DNS name of your Docker daemon's host.
```console
$ docker --tlsverify \