Мое клиентское приложение ASP.NET Core генерирует ошибку. При отладке происходит сбой в строке HttpResponseMessage
.
...
var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync(tokenEndpoint, content);
...
Я получаю эту ошибку:
Не удалось установить SSL-соединение: AuthenticationException: удаленный сертификат недействителен в соответствии с процедурой проверки: RemoteCertificateNameMismatch.
Конечная точка токена правильная, я не получаю никаких ошибок ответа (401, 403.. и т. д.), которые помогут мне устранить возможные проблемы, связанные с кодом.
Если я запускаю тест с помощью Postman, все работает нормально.
Пытаясь понять разницу, единственное, что я вижу, это то, что у Postman отключены «конфигурация SSL» и «сертификат CA» (по умолчанию).
Я даже экспортировал сертификат с сервера (где работает API) и импортировал его на клиент, на котором было запущено клиентское приложение ASP.NET Core — не повезло :(
Итак, сейчас у меня вопрос: почему Postman не жалуется на несоответствие сертификатов?
Итак, на данный момент мой вопрос: почему Почтальон не жалуется на несоответствие сертификата?
Вы не получаете сообщение об ошибке с почтальоном, потому что вы настроили почтальона на отключение проверки сертификата SSL. это означает, что Postman будет игнорировать ошибки сертификата, такие как несоответствие имени хоста сертификата и имени хоста сервера.
Чтобы устранить ошибку, сначала вы можете проверить, соответствует ли сертификат сервера ожидаемому имени хоста.
Установите сертификат в доверенную корневую папку сертификата компьютера.
Или вы можете игнорировать эту ошибку сертификата, используя код:
var handler = new HttpClientHandler
{
ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true
};
using (var client = new HttpClient(handler))
{
var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync(tokenEndpoint, content);
...
.......
}