Я пытаюсь установить файл .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.