Наконец я понял проблему. Проблема заключается в том, что ssl-сертификат разработчика устанавливается вместе с dotnet SDK с именем localhost. В случае Ubuntu сертификат находится по адресу / home / {имя пользователя} /.dotnet/corefx/cryptography/x509stores/my
Kestrel просто ищет в домашнем каталоге исполняемого пользователя, который не существует для «www-данных», следовательно, он не может найти сертификат разработки. Из-за чего он не привязывается к порту https по умолчанию.
Чтобы заставить его работать, я сначала преобразовал свой существующий сертификат в формате PEM ( .crt) в PKCS12 ( .pkf), используя OpenSSL. Ниже приведена команда.
sudo openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile more.crt
Затем мне нужно было указать этот сертификат на сервере Kestrel, используя файл appsettings.json. Ниже показано, как файл выглядит сейчас:
{
"ConnectionStrings": {
"PostgresConnection": "Host=localhost; Database=postgres; Username=postgres; Password=xyz123"
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
},
"Kestrel": {
"Endpoints": {
"HTTPS": {
"Url": "https://localhost:5001",
"Certificate": {
"Path": "/etc/ssl/certs/<certificate.pfx>",
"Password": "xyz123"
}
}
}
}
}
Затем вам нужно добавить пользователя www-data в группу ssl-certs. ниже командная строка:
sudo usermod -aG ssl-cert www-data