Установка пользовательского сертификата CA в контейнере docker не работает - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь установить файл .crt в контейнер linux docker прямо сейчас. Я пытаюсь сделать это с помощью сгенерированного VS2019 Dockerfile в. Net Core проекте.

Вот Dockerfile:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80

ENV MooMed_Cache_BaseTtlInSeconds=3600

COPY "Certs/moomed.crt" /usr/local/share/ca-certificates/moomed.crt

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ... (I omitted some lines here to save space)
RUN dotnet restore "Services/MooMed/MooMed.Web.csproj"
COPY . .
WORKDIR "/src/Services/MooMed"
RUN dotnet build "MooMed.Web.csproj" -c Release -o /app/build

FROM build AS publish 
RUN dotnet publish "MooMed.Web.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
RUN chmod 644 /usr/local/share/ca-certificates/moomed.crt
RUN update-ca-certificates
RUN awk -v cmd='openssl x509 -noout -subject' '/BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MooMed.Web.dll"]

Однако сертификат moomed.crt не зарегистрирован должным образом, поскольку я не могу прочитать его при запуске приложения и попытке доступа к хранилищу с помощью:

var store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
store.Open(OpenFlags.OpenExistingOnly);
var certs = store.Certificates;

certs не содержит соответствующего сертификата, а команда RUN awk .. также не выводит список it.

Я уже зашел в контейнер, проверил наличие файла и запустил update-ca-Certificates вручную. Не повезло.

Куда я иду не так?

РЕДАКТИРОВАТЬ: на этот раз я восстановил сертификат с openssl, и теперь я, по крайней мере, нахожу свой сертификат в списке, который помещает RUN awk ... вне. Тем не менее, я до сих пор не могу получить к нему доступ через код магазина X509.

...