. NET Core Linux Конфигурация Kestrel https - PullRequest
1 голос
/ 06 февраля 2020

Здравствуйте и заранее благодарю за помощь, которую вы можете оказать мне.

Мы развернули наше первое. 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...