Docker backend certifikát

Určit hostname.

Pokud je to .inited.cz , tak ho na web4u přidat do DNS.

Vygenerovat serverový certifikát

Použijeme easy-rsa, což je jednoduchá certifikační autorita.

# cd easy-rsa/
# source ./vars
# vi openssl.cnf

přidat server hostname tady:
(je to dočasný workaround)

...
extendedKeyUsage=serverAuth
keyUsage = digitalSignature, keyEncipherment
subjectAltName=$ENV::KEY_ALTNAMES
#
# pokud potrebuji SSL certifikat pro server, tady nastavit hostname:
subjectAltName=DNS:server-docker.inited.cz

# ./build-key-server server-docker.inited.cz

# less keys/farma-docker.inited.cz.key


vzít:

  • privátní klíč: keys/server-docker.inited.cz.key
  • serverový certifikát: keys/server-docker.inited.cz.crt
  • certifikát certifikační autority: keys/ca.cert

a vložit je na serveru do složky /etc/docker

přejmenovat

a nastavit oprávnění:

# chmod 600 /etc/docker/server-key.pem
# chmod 644 /etc/docker/server-cert.pem /etc/docker/ca.pem


Upravit, případně založit soubor /etc/docker/daemon.json :

{
  "tls": true,
  "tlsverify": true,
  "tlscacert": "/etc/docker/ca.pem",
  "tlscert": "/etc/docker/server-cert.pem",
  "tlskey": "/etc/docker/server-key.pem",
  "hosts": ["tcp://0.0.0.0:2376", "unix:///var/run/docker.sock"]
}


Dále je třeba změnit konfiguraci služby systemd. Ve výchozím nastavení se konfigurace vkládá přes příkazovou řádku. Nově bude konfigurace v /etc/docker . Nelze mít konfiguraci na obou místech.

vi /lib/systemd/system/docker.service :

[Service]
....
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd
...


Po změně configu je třeba udělat reload definice a spustit docker:


# systemctl daemon-reload
# systemctl start docker



Nastavení lokálního přístupu přes SSL do docker serveru:

$ docker context create vzdaleny-server --docker "host=tcp://server-docker.inited.cz:2376,ca=ca.pem,cert=cert.pem,key=key.pem"


potom

docker context use vzdaleny-server


a je to