1. ホーム
  2. ubuntu

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

2023-08-22 16:41:28

質問

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) そうでない場合、どのように修正すればよいですか?

どのように解決するのですか?

通常のシステムでも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