Как установить сертификат Root CA для использования с пустельгами HTTPS в контейнере debian docker

Я застрял с получением аутентификации клиента https для работы с приложением Asp.Net Core, работающим в контейнере докера с Debian. Приложение Asp.Net отлично работает в Windows с аутентификацией клиентов с помощью сертификатов.

Однако, если я запускаю приложение asp.net в контейнере докеров, некоторые клиенты не будут отправлять сертификат клиента, потому что в SSL-рукопожатии сервер отправляет список всех своих доверенных корневых центров сертификации. Затем некоторые клиенты на основе .Net 4.0 фильтруют свои клиентские сертификаты, чтобы он содержал только сертификаты, выпущенные ЦС из этого списка.

Теперь моя проблема в том, что я не устанавливаю корневой ЦС с системой Docker Debian, поэтому мой корневой ЦС находится в списке, отправленном сервером.

Я уже пробовал добавить сертификат в свой файл докеров с помощью

ADD ${source:-my_ca_root.crt} /usr/local/share/ca-certificates/my_ca_root.crt
RUN update-ca-certificates

Но это, кажется, не работает.

Другим вариантом было бы указать серверу не отправлять список доверия сертификатов, но я не смог найти для этого решения.

Приложение Asp.NET Core работает с образом докера "Microsoft/aspnetcore:2.0".


person BoeseB    schedule 12.10.2017    source источник
comment
Вы обновляете системные корневые центры сертификации правильным способом для Debian. Но вполне возможно, что ASP.net использует свой собственный список ЦС, а не системный. Вы можете убедиться в этом, удалив пакеты ca-certificates и посмотреть, какой список ROOT ca он отправляет. Если он пуст, то мы знаем, что корневой ЦС должен быть на системном уровне, если нет, нам нужно найти то, что asp.net использует для своего корневого ЦС.   -  person Tarun Lalwani    schedule 12.10.2017
comment
Поэтому я удалил файл /etc/ssl/certs/ca-certificates.crt, и, похоже, он все еще отправляет список.   -  person BoeseB    schedule 12.10.2017
comment
В соответствии с этим stackoverflow.com/questions/44159793/ использует корневой ca из системы. Вы запускали update-ca-certificates после удаления сертификатов для подтверждения? Также посмотрите, связано ли это с проблемой github.com/dotnet/corefx/issues/16879   -  person Tarun Lalwani    schedule 12.10.2017
comment
Хорошо, я получил соединение, я удалил все в /etc/ssl/certs/ и не добавлял никаких сертификатов и не запускал update-ca-certificates. Я добавил строку «RUN rm /etc/ssl/certs/*» в свой dockerfile и удалил два других из моего вопроса. Так почему же мой сертификат ЦС раньше не обновлялся в списке?   -  person BoeseB    schedule 12.10.2017