У нас есть конечная точка веб-API, настроенная так, чтобы разрешать, но не требовать сертификаты клиентов.
Мы регистрируем полученный сертификат, затем проверяем, соответствует ли он ожидаемому, записываем результат, а затем либо разрешаем доступ, либо возвращаем 403.
Проблема в том, что если клиент отправляет сертификат, не подписанный доверенным корневым центром, похоже, что мы вообще не получаем сертификат.
Я бы предпочел иметь возможность регистрировать, какой сертификат мы получили, а затем регистрировать, что он не был подписан, а затем возвращать 403 вместо того, чтобы просто регистрировать, что сертификат не был предоставлен.
Есть ли что-то, что я могу настроить в IIS, чтобы разрешить это?
В комментарии говорится, что это обычно называется «самозаверяющим сертификатом», и это упускает суть, поэтому я не должен пояснять.
Нет никакой разницы между сертификатом, подписанным доверенным корневым центром, и сертификатом, подписанным пользователем, за исключением того, что открытый ключ доверенного корневого центра должен быть установлен как доверенный корневой центр по умолчанию.
Предположим, пользователь создал свой собственный сертификат подписи, использовал его для подписи сертификата клиента и прикрепил этот сертификат к HTTP-запросу, но не добавил свой сертификат подписи в доверенные органы сервера?
Я вижу, что происходит удаление сертификата, так что контроллеру конечной точки кажется, что сертификат не был прикреплен.
Это означает, что при ведении журнала на стороне сервера невозможно различить случай, когда сертификат не был предоставлен, или когда был предоставлен ненадежный сертификат.
Я хотел бы иметь возможность регистрировать разные сообщения об ошибках для двух случаев.