Skip to content

Commit 6b3d48a

Browse files
committed
Adjust DOCKER_TLS_CERTDIR behavior to allow providing server certs without CA
This is the way to specify "I want TLS configured, but I'm managing the certs myself" The only thing we'll do is verify that the `cert.pem` is legit with respect to the `ca.pem` and then we'll let Docker itself provide any relevant errors beyond that.
1 parent f7c1eb2 commit 6b3d48a

File tree

3 files changed

+18
-9
lines changed

3 files changed

+18
-9
lines changed

20.10/dind/dockerd-entrypoint.sh

Lines changed: 6 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

23.0/dind/dockerd-entrypoint.sh

Lines changed: 6 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dockerd-entrypoint.sh

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,17 @@ _tls_san() {
2121
_tls_generate_certs() {
2222
local dir="$1"; shift
2323

24+
# if server/{ca,key,cert}.pem && !ca/key.pem, do NOTHING except verify (user likely managing CA themselves)
2425
# if ca/key.pem || !ca/cert.pem, generate CA public if necessary
2526
# if ca/key.pem, generate server public
2627
# if ca/key.pem, generate client public
2728
# (regenerating public certs every startup to account for SAN/IP changes and/or expiration)
2829

30+
if [ -s "$dir/server/ca.pem" ] && [ -s "$dir/server/cert.pem" ] && [ -s "$dir/server/key.pem" ] && [ ! "$dir/ca/key.pem" ]; then
31+
openssl verify -CAfile "$dir/server/ca.pem" "$dir/server/cert.pem"
32+
return 0
33+
fi
34+
2935
# https://github.com/FiloSottile/mkcert/issues/174
3036
local certValidDays='825'
3137

@@ -110,9 +116,6 @@ if [ "$#" -eq 0 ] || [ "${1#-}" != "$1" ]; then
110116
# add our default arguments
111117
if [ -n "${DOCKER_TLS_CERTDIR:-}" ]; then
112118
_tls_generate_certs "$DOCKER_TLS_CERTDIR"
113-
[ -s "$DOCKER_TLS_CERTDIR/server/ca.pem" ]
114-
[ -s "$DOCKER_TLS_CERTDIR/server/cert.pem" ]
115-
[ -s "$DOCKER_TLS_CERTDIR/server/key.pem" ]
116119
# generate certs and use TLS if requested/possible (default in 19.03+)
117120
set -- dockerd \
118121
--host="$dockerSocket" \

0 commit comments

Comments
 (0)