Здравствуйте и заранее благодарю за помощь, которую вы можете оказать мне.
Мы развернули наше первое. NET Базовое приложение на Linux (Ubuntu 18.04 LTS и Apache2).
Мы не знаем ни сертификатов серверов, на которых они будут развернуты, ни портов, на которых они будут развернуты, поскольку они являются клиентскими, и у нас нет доступа, поэтому нам нужно иметь возможность вводить их по конфигурации в appsettings ( конфигурация Kestrel ).
В windows API работает без проблем как в http, так и в https, помещая эту конфигурацию в appsettings. json и читая ее в Startup.cs примерно так:
// kestrel configuration
services.Configure<KestrelServerOptions>(Configuration.GetSection("Kestrel"));
Наша windows конфигурация appsettings. json:
"AllowedHosts": "*.mydomain.es;*.mydomain-eu.com;test-win;test-linux;localhost;127.0.0.1;*.myActiveDirectoryDomain.ad",
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5009"
}
,"Https": {
"Url": "https://localhost:5010"
}
}
}
При развертывании на Linux с той же конфигурацией служба Kestrel не запускается. Ошибка службы Kestrel:
sudo systemctl status kestrel-apieu.service ● kestrel-apieu.service - Пример ASP. NET Api, работающий в Ubuntu 18.04 Загружен: загружен (/ etc / systemd / system / kestrel-apieu.service; включен; предустановка поставщика: включена) Активен: активирован (автоматический перезапуск) ( Результат: core-dump ) с ЧТ 2020-02-06 09 13: 20 CET; 4s a go Процесс: 4449 ExecStart = / usr / bin / dotnet / var / www/core/api/apieu/HHHHH.JJJJJJJJ.Api.UnitsEuApi.dll (код = сброшен, сигнал = ABRT) Основной PID: 4449 ( код = сброшен, сигнал = ABRT )
Удаление части https работает в http без проблем, например:
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5009"
}
}
}
Служба Kestrel работает:
sudo systemctl status kestrel- apieu.service ● kestrel-apieu.service - Пример ASP. NET API, работающий в Ubuntu 18.04 Загружен: загружен (/etc/systemd/system/kestrel-apieu.service; включен; предустановка поставщика: включен) Active: активно (работает) с четверга 2020-02-06 09:16:19 CET; 2s a go Основной PID: 5504 (do tnet) Задачи: 17 (ограничение: 4660) CGroup: /system.slice/kestrel-apieu.service └─5504 / usr / bin / do tnet / var / www/core/api/apieu/HHHHH.JJJJJJJJ.Api.UnitsEuApi.dll
Когда мы устанавливаем эту конфигурацию, к самозаверяющим сертификатам сервера .crt служба Kestrel поднимается, но не работает по https.
Настройки конфигурации:
"AllowedHosts": "*.mydomain.es;*.mydomain-eu.com;test-win;test-linux;localhost;127.0.0.1;*.myActiveDirectoryDomain.ad",
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5009"
}
,"Https": {
"Url": "https://localhost:5010", // we also tried: "https://*:5010"
"Certificate": {
"Path": "/etc/apache2/ssl/apache.crt",
"Password": "/etc/apache2/ssl/apache.key",
"AllowInvalid": true
}
}
}
http://localhost: 5009 / тест работает отлично, но https://localhost: 5010 / тест ошибка отправки:
Безопасное соединение Failed
Ошибка при подключении к localhost: 5010. PR_END_OF_FILE_ERROR
The page you are trying to view cannot be shown because the authenticity of the received data could not be verified.
Please contact the website owners to inform them of this problem.
Но самозаверяющий сертификат позволяет без проблем вводить https://localhost (если вы доверяете сертификату).
Мы также пытались преобразовать самоподписанный сертификат .crt в .pfx (с OpenSSL -> преобразовать crt в сертификат pfx ) и настроить его следующим образом:
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5009"
}
,"Https": {
"Url": "https://*:5010",
"Certificate": {
"Path": "/etc/apache2/ssl/apache.pfx",
"Password": "passwdExport"
,"AllowInvalid": true
}
}
}
}
Но это также не поднимает службу и не работает ни по http, ни по https.
Мы просмотрели все эти страницы справки, среди прочего:
. net выдача SSL для основного сервера Kestrel
выдача сертификата в конфигурации Kestrel ssl JSON с использованием. net Core 3.1
Asp. Net Core 2.0 HTTP -> HTTPS на Kestrel
Будет ли работать самозаверяющий сертификат за Apache обратным прокси-сервером?
Проблема кажется быть таковым, что мы неправильно настраиваем Kestrel с самозаверяющим сертификатом. Но мы не можем найти свою ошибку. Можете ли вы помочь нам?
Большое спасибо.
Если вы можете дать больше информации, мы открыли другой предыдущий пост, это было более обобщенно c, потому что мы не знали, что проблема пришел от Kestrel, но мы думали, что это из Apache2: deploy NET Core Linux HTTPS SSL