Я без проблем создал веб-приложение 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)
Поискал и нашел много похожих, но не точных вариантов этой проблемы, ни один из которых не подходит для моего случая.
Вопросы, предложения и ответы приветствуются.