今のプロジェクトでVPN環境を変えたところ、Dockerのpullでいきなりエラーが・・・
WindowsにWSL2を使ってubuntuを入れているのですが、WindowsのCA証明書の追加をubuntu側にインストールして無事解決しました。
ただ、メカニズムがわかっていなかったのでここで少しメモしておこうと思います。
Dockerのpullに関して
そもそもDockerでimageをpullする際にはディフォでTLS通信が必要になってきます。
なので、sslがらみのエラーがでたときに問答無用でoffにする・・・などもありといえばありですが、根本的な解決にはなっていません。
Ubuntu on Docker で SSL/TLS 通信するとエラーになる問題の対処
まずはメカニズムを理解せねば・・ということで、TLSの基礎について学んでいこうと思います。
TLSとは
TLSとはSSLの発展版のような機能のようで、簡単にいいますと、以下の2点になるかと思います。
- 公開鍵による情報のやりとり(共通鍵単一よりもセキュア)
- サーバーの正当性を証明(認証局から証明書のようなものが発行され、なりすましの防止になる。この認証局をCA=CertificationAuthoriryといい、必要になる証明書がCA証明書です。)
めちゃくちゃ基本的でわかりやすいのでリンクを・・・
SSLとTLSとは?意外に知らないSSLとTLSの違い(簡単編)
今回と少しベクトルが違いますが、ローカルでHTTPS通信する場合の処理など。
【Apache】ローカルに立てたDockerコンテナでHTTPS通信する方法
DockerでのCA証明書追加
DockerImage自体に証明書を追加し、CA証明書として追加する必要があります。
本来Dockerデーモンの設定に組み込まれているようですが、VPNなどで通信の経路が変わった際には必要になるかと思います。
CA証明書に関して、実際発行されているものを使用するケースもあると思いますし、いわゆるオレオレ証明書を使うケースもあるかと・・・
実際のコマンドなどはリンクを参照いただければと思います。