TLS認証についての知識は非常に限られています。ドッカーデーモンにhttpsを有効にしたかったのです。私はthisチュートリアルに続いたが、最終的にドッカーデーモンの起動に失敗した。DockerでTLSが失敗しました
私はUbuntu 16.04 VMでドッカーを使用しています。クライアントとサーバーは同じマシンです。だから私はすべてのプロセスの間に 'Common Name
'として$hostname
を使用します。
私は
sudo dockerd --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem -H=0.0.0.0:2376
を実行したときにドッキングウィンドウのドキュメントの全体のプロセスを以下の後、私は情報を取得 "API listen on [::]:2376
"
私は以下のコマンドを使用すると、そのログ:
docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H=$HOST:2376 version
をI適切な応答を得る。
しかし、私はデーモンをリロードし、ドッキングウィンドウを起動しようとすると、それは言うがドッキングウィンドウを起動すると「journalctl -xe」は以下のmessage-
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.
必要な証明書を~/.docker/
にコピーし、/lib/systemd/system/docker.service
ファイルの「ExecStart
」は:
ExecStart=/usr/bin/dockerd -H fd:// -H 0.0.0.0:2376 \
--tlsverify --tlscacert=/home/sakib/.docker/ca.pem \
--tlskey=/home/sakib/.docker/key.pem \
--tlscert=/home/sakib/.docker/cert.pem
です
が、私は次の応答を取得するAPIと通信しようとすると:
$ curl -X GET https://0.0.0.0:2376/images/json
curl: (35) gnutls_handshake() failed: Certificate is bad
$ docker version
Client:
Version: 1.12.1
API version: 1.24
Go version: go1.6.3
Git commit: 23cf638
Built: Thu Aug 18 05:33:38 2016
OS/Arch: linux/amd64
An error occurred trying to connect: Get https://EL802:2376/v1.24/version: x509: certificate is valid for $HOST, not EL802
注:EL802は、私は「ホスト」環境変数として設定私のホスト名です。
クライアント証明書を作成する際に選択した「CN」という名前が問題だと思います。私のクライアントとサーバは、私が$HOST
として設定私のホストマシン(EL802)であるとして
openssl req -subj '/CN=$HOST' -new -key key.pem -out client.csr
:
openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr
はクライアント:私はbelow-
サーバーとして、サーバーとクライアント証明書を作成します変数。
PIDの問題をありがとう。写真を撮るのは間違いだった。私は問題を編集しました。私の主な問題は、実際にはserver/clientのCSRを作成する際に選択したCNの名前です。しかし、私は私はそれに応じて私の答えを編集した任意のドメイン(EX- XXcom) –
@zamansakibに属していないシンプルなVMを使用していたときに、サーバー/クライアントのFQDN名(例:CN名)がどうあるべきか分かりません。 – VonC
ソリューションのおかげで、それは、新たなエラーが発生します。私はこれについて新しい問題を作り出すべきかどうか確信していません。 APIに接続しようとすると、次のような警告が表示されます。これはかなり奇妙です。 $カールます。https:// $のHOST: \ 2376 /画像/ JSON> --cert〜/ .docker/cert.pemを\ > --key〜/ .docker/key.pem \ > SSL:証明書サブジェクト名(EL802)がターゲットホスト名 'EL802'と一致しません –