Kestrel Certificate нет такого файла в контейнерах Linux, работает найти в контейнерах Windows

Я без проблем создал веб-приложение aspnetcore, используя https в контейнерах docker windows. Когда я модифицировал его для работы в контейнерах Linux с использованием http, проблем не возникло.

Однако, когда я включил https в контейнере Linux, kestrel выдает исключение, говорящее, что для сертификата не найден файл. После поиска я нашел по адресу https://github.com/dotnet/dotnet-docker/blob/master/samples/aspnetapp/aspnetcore-docker-https-development.md

Note: The certificate name, in this case aspnetapp.pfx must match the project assembly name.

Я переименовал сертификат, чтобы он точно соответствовал имени сборки.

Допустим, имя:

Компания.RLG.Сервер.WebAPI.dll

Я назвал файл сертификата: «Company.RLG.Server.WebAPI.pfx». Для моего тестового приложения я просто скопировал его в папку /https. (Позже будет делать разделение тома.)

Мой раздел DockerFile для переменных среды Kestrel:

ENV ASPNETCORE_HTTPS_PORT="8001"
ENV ASPNETCORE_Kestrel__Certificates__Default__Password="x"
ENV ASPNETCORE_Kestrel__Certificates__Default__Path="\https\Company.RLG.Server.WebAPI.pfx"
ENV ASPNETCORE_URLS="https://+;http://+"

Однако даже после такого переименования Kestrel жалуется:

crit: Microsoft.AspNetCore.Server.Kestrel[0]
      Unable to start Kestrel.
Interop+Crypto+OpenSslCryptographicException: error:2006D080:BIO routines:BIO_new_file:no such file
   at Interop.Crypto.CheckValidOpenSslHandle(SafeHandle handle)
   at Internal.Cryptography.Pal.CertificatePal.FromFile(String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags)
   at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags)

Поискал и нашел много похожих, но не точных вариантов этой проблемы, ни один из которых не подходит для моего случая.

Вопросы, предложения и ответы приветствуются.


person SteveSims    schedule 09.12.2019    source источник
comment
Кстати, пользователь контейнера является пользователем root для этого тестового приложения, поэтому не должно быть проблем со скрытыми разрешениями.   -  person SteveSims    schedule 09.12.2019
comment
Хотел бы я дважды лайкнуть этот вопрос, потому что это сэкономило мне кучу времени!   -  person mrogunlana    schedule 20.02.2020


Ответы (1)


ДУХ.

Извините за тупой вопрос народ. Я уловил проблему.

Вы видите, что выше я добавляю обратную косую черту к пути к сертификату.

Я изменил их на косую черту, и теперь все работает.

person SteveSims    schedule 09.12.2019