0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

docker-compose で TLSV1_ALERT_PROTOCOL_VERSION エラー 他多数

Posted at

概要

ある日 docker-compose を実行したところ、TLSV1_ALERT_PROTOCOL_VERSION というエラーがでました。試行錯誤したあげく、最終的に TLS 検証を無効にしてエラーを回避しました。ちゃんと TLS で動かせる人には無用の長物かと思います。

Version

一応書いておきます。

$ docker --version
Docker version 19.03.13-ce, build 4484c46
$ docker-compose version
docker-compose version 1.19.0, build 9e633ef
docker-py version: 2.7.0
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t  3 May 2016

エラー回避手順

work-log は冗長なのでここにまとめておきます。

1. DOCKER_TLS_VERIFY, DOCKER_CERT_PATH を空にする

最終的には .bash_profile などに設定しておく

$ export DOCKER_TLS_VERIFY=
$ export DOCKER_CERT_PATH=

2. /etc/sysconfig/docker から tlsverify オプションを削除して dockerd を再起動

設定は抜粋です。

/etc/sysconfig/docker
# Before
OPTIONS="--tlsverify --tlscacert=/etc/docker/ssl/ca.pem --tlscert=/etc/docker/ssl/cert.pem --tlskey=/etc/docker/ssl/key.pem"

# After
OPTIONS="--tlscacert=/etc/docker/ssl/ca.pem --tlscert=/etc/docker/ssl/cert.pem --tlskey=/etc/docker/ssl/key.pem"

※ ちなみに、最低限 tlsverify を削除すれば動きますが、他の tls~~ を全部消しても特に問題ありませんでした。

$ sudo systemctl restart docker

3. Optional: COMPOSE_TLS_VERSION が set されている場合は unset

私は TLSV1_ALERT_PROTOCOL_VERSION が出たあとに設定していたので、unset が必要でした。

$ unset COMPOSE_TLS_VERSION

Work-log

※ 注意:以下は時系列で作業ログを書いたものであり、最終的に使わなかった COMPOSE_TLS_VERSION の設定などもしているため冗長です。必要な手順のみ確認したい場合は上の方を参照してください。

ことの発端。tlsv1 はダメとのこと。

$ docker-compose up -d
ERROR: SSL error: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:661)

ググると COMPOSE_TLS_VERSION に TLSv1_2 を設定せよという記事が多く出てきたので設定してみる。

$ export COMPOSE_TLS_VERSION=TLSv1_2

が、今度は CERTIFICATE_VERIFY_FAILED ><

$ docker-compose up -d
ERROR: SSL error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)

さらに調べていくとこの github issue を見つける。

DOCKER_TLS_VERIFY, DOCKER_CERT_PATH を空にする。

$ export DOCKER_TLS_VERIFY=
$ export DOCKER_CERT_PATH=

が、今度は SSLV3_ALERT_BAD_CERTIFICATE ...

$ docker-compose up -d
ERROR: SSL error: [SSL: SSLV3_ALERT_BAD_CERTIFICATE] sslv3 alert bad certificate (_ssl.c:661)

あ、COMPOSE_TLS_VERSION 設定したままになってた。

unset する。

$ unset COMPOSE_TLS_VERSION

が、今度は ERROR: Client sent an HTTP request to an HTTPS server.

$ docker-compose up -d
ERROR: Client sent an HTTP request to an HTTPS server.

/etc/sysconfig/docker から tlsverify オプションを削除し、dockerd を restart

/etc/sysconfig/docker
# Before
OPTIONS="--tlsverify --tlscacert=/etc/docker/ssl/ca.pem --tlscert=/etc/docker/ssl/cert.pem --tlskey=/etc/docker/ssl/key.pem"

# After
OPTIONS="--tlscacert=/etc/docker/ssl/ca.pem --tlscert=/etc/docker/ssl/cert.pem --tlskey=/etc/docker/ssl/key.pem"
$ sudo systemctl restart docker

It works fine.

$ docker-compose up -d
Creating docker_selenium-hub_1 ... done
Creating docker_selenium-hub_1 ...
Creating docker_chrome_1    ... done

補足

なお、/etc/sysconfig/docker から tlsverify を削除をするのみだと、WRONG_VERSION_NUMBER と言われる。

$ docker-compose up -d
ERROR: SSL error: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:661)

その場合、DOCKER_TLS_VERIFY, DOCKER_CERT_PATH を空にすると解決するはず。

$ export DOCKER_TLS_VERIFY=
$ export DOCKER_CERT_PATH=

おわり

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?