Introduction

自宅のSynology上に構築したdocker registryにLet’s EncryptでHTTPS化後、Webブラウザからアクセスはできるが、docker loginによる認証が下記のように通らない場合の対応。

1
2
3
4
docker login https://xxxxxxx.yyyyyyy.zzz:4443/v2/
Username : hoge
Password:
Error response from daemon: Get https://xxxxxxx.yyyyyyy.zzz:4443/v2/: x509: certificate signed by unknown authority

How to?

docker registryで使用している証明書 (*.crt) をdocker loginを使うマシンにコピーします。
REGISTRY_HTTP_TLS_CERTIFICATEで指定しているはず。

コピーした*crtをregistry.crtとします。
こんな感じでdockerデーモン管理下の証明書置き場に展開します。
展開する際、ファイル名はca.crtにします。

1
2
3
4
5
6
REGISTRY=xxxxxxx.yyyyyyy.zzz:4443
sudo mkdir -p /etc/docker/certs.d/${REGISTRY}
sudo cp registry.crt /etc/docker/certs.d/${REGISTRY}/ca.crt

# デーモンを再起動
sudo systemctl restart docker

もう一度ログインしてみます。

1
2
3
4
5
6
7
8
docker login https://xxxxxxx.yyyyyyy.zzz:4443/v2/
Username: hoge
Password:
WARNING! Your password will be stored unencrypted in /home/hoge/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

うまくいきました。