web-dev-qa-db-ja.com

Dockerイメージ内にCAルート証明書を追加するにはどうすればよいですか?

Ubuntu 14.04のDocker 1.13.1コンテナーでASP.NET Core 1.1 Web APIを実行しています。

コードがHTTPSサーバーからデータを取得しようとすると、次の証明書認証エラーが発生します。

 An error occurred while sending the request. ---> System.Net.Http.CurlException: Peer certificate cannot be authenticated with given CA certificates
   at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error)
   at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult)

HTTPSサーバーは社内CAによって署名された証明書で内部にあるため、内部CAを登録する必要がある場合があることに注意してください。

このエラーについてこれまでに発見したすべてのことと、Dockerは、Docker自体の実行、リポジトリへの接続などについて話します。私のDockerは正常に動作し、Web APIはコンテナ外のUbuntuサーバーで問題なく実行されます。

1)Dockerイメージ内にCAルート証明書を追加する必要がありますか?

2)その場合、どうすればよいですか?

3)そうでない場合、これを修正するにはどうすればよいですか?

15
Peter

通常のシステムにもそのCAを追加する必要があるため、タスク自体はdockerに固有のものではありません。 askubuntuコミュニティ にこれを行う方法に関する回答があります。

Dockerfile では、次のようにします(root以外のユーザーでコンテナーを実行している場合は、chmodを忘れないでください)。

ADD your_ca_root.crt /usr/local/share/ca-certificates/foo.crt
RUN chmod 644 /usr/local/share/ca-certificates/foo.crt && update-ca-certificates
25
cebe

また、これには間違いなく.crt拡張子を使用する必要があることに注意してください。私は最初に.pem証明書ファイル(これらは互換性があると思ったので、他の人もそうかもしれない)でこれを試しました。これはupdate-ca-certificatesによってリンクされていません。

2
damiankloip