Попробовав еще кучу раз, я снова пересмотрел весь процесс сертификации. Только на этот раз я пошел с openssl до конца.
Я кратко опишу свои шаги для тех, кто сталкивается с такой же проблемой:
Я следовал в этом посте до письмо.
Таким образом, я настроил сертификат CA, которому я могу доверять как в Windows, так и Linux (Docker) средах, называемых cacert.crt
. Затем я создал запрос на подпись сертификата, как указано в связанном ответе, использовал сертификат CA, чтобы подписать его и получить действительный сертификат SSL, который называется servercert.pfx
. В руководстве указаны только файлы .pem, но преобразование между форматами с помощью инструмента openssl cli очень просто.
Затем я зарегистрировался в моем контроле исходного кода и отредактировал мой dockerfile и составить файл.
Затем я установил cacert.crt в хранилище сертификатов моего локального компьютера в категории доверенных root полномочий.
В файле docker я поместил следующее прямо перед ENTRYPOINT
:
COPY ["servercert.pfx", "/https/servercert.pfx"]
COPY ["cacert.crt", "/usr/local/share/ca-certificates/cacert.crt"]
RUN update-ca-certificates
В docker -compose.yml я помещаю следующее в environment
:
- ASPNETCORE_URLS=https://0.0.0.0:5000
- ASPNETCORE_HTTPS_PORT=5000
- ASPNETCORE_Kestrel__Certificates__Default__Password={YourPw}
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/servercert.pfx
Фактический номер порта, а также значение для пароля должны быть адаптированы по мере необходимости, очевидно.
Это решило все мои проблемы. Все браузеры теперь успешно переходят без ошибок SSL к https://localhost: 5000 , который обслуживает из docker. Я также могу подключиться к контейнеру docker и без проблем запустить $ curl https://localhost:5000
и $ curl https://dockerDnsName:5000
. Это также исправило все проблемы с HttpClient.