AuthenticationException: удаленный сертификат недействителен в соответствии с процедурой проверки.

У меня есть 2 приложения asp.net core 3.1. один из них - IdentityServer, а другой - Клиент, благодаря чему метод действия OpenID Connect to IdentityServer, если имеет атрибут авторизации.

  1. В моем IdentityServer ничего странного нет. Есть только несколько клиентов и пользователей InMemory:
// User 1
{
   "SubjectId": 1,
   "Username": "MyName",
   "Password": "MyPassword"
}

// Client 1
{
   "ClientId": "ClientID",
   "ClientName": "This is MVC1 Client",
   "ClientSecrets": [{
       "Value": "ClientSecret"
    }],
   "AllowedGrantTypes": [ "authorization_code" ],
   "RedirectUris": [ "http://localhost:7573/signin-oidc" ],
   "PostLogoutRedirectUris": [ "http://localhost:7573/signin-oidc" ],
   "AllowedScopes": [
       "openid",
       "profile",
       "address",
       "email",
       "phone"
    ],
    "RequirePkce": true,
    "AllowPlainTextPkce": false
}
  1. А это мое клиентское приложение:
services
        .AddAuthentication(options => {
              options.DefaultScheme = "Cookie";
              options.DefaultChallengeScheme = "OIDC";})

        .AddCookie("Cookie")
        .AddOpenIdConnect("OIDC", options => { // This config used for Authentication
              options.SignInScheme = "Cookie";
              options.SignOutScheme = "Cookie";

              options.Authority = "http://192.168.34.33:80"; // My remote Server
              options.RequireHttpsMetadata = false;

              options.ClientId = "MVC1";
              options.ClientSecret = "MVC1";

              options.ResponseType = "code";
              options.UsePkce = true;

              options.SaveTokens = true;

              options.ResponseMode = "query";

              options.CallbackPath = "/signin-oidc";

              options.Scope.Clear();
              options.Scope.Add("openid");
              options.Scope.Add("profile");
              options.Scope.Add("email");
              options.Scope.Add("address");
              options.Scope.Add("phone");
      });

And This Configuration WORK Well with HTTP Но НЕ HTTPS

 введите описание изображения здесь
when i press login, it work ok and after authentication, redirect me back to the client

Проблема в том, когда я меняю Полномочия URL на HTTPS, я получаю сообщение об ошибке удаленного сертификата, потому что в моем IIS нет действующего сертификата
Итак:

  1. Я создаю самоподписанный сертификат в своем IIS и привязываю его к своему проекту:

введите описание изображения здесь

  1. А также я добавляю этот сертификат в мои доверенные корневые центры сертификации клиентского компьютера:

    введите описание изображения здесь

  2. Я меняю options.Authority и options.RequireHttpsMetadata на это:

    options.Authority = "https://192.168.34.33:4430"; // My remote Server
    options.RequireHttpsMetadata = true;

Now when i click on Privacy button in my client application (Authorize action method), i see certificate error:

введите описание изображения здесь

Пожалуйста, помогите мне. Мне действительно нужна помощь. Спасибо :))


person Ali Abbasifard    schedule 01.03.2021    source источник


Ответы (1)


Вы не можете использовать IP-адрес и HTTPS вместе, как здесь:

   options.Authority = "https://192.168.34.33:4430"; // My remote Server
   options.RequireHttpsMetadata = true;

Чтобы TLS / HTTPS работал, у вас должно быть доменное имя сервера. В противном случае, кто может знать, с кем разговаривает клиент?

person Tore Nestenius    schedule 01.03.2021