
Для проекта домашней автоматизации я создал API (написанный на ASP.NET, поэтому размещенный в IIS) и написал собственное приложение Android для взаимодействия с этим API. Чтобы запретить людям доступ к определенным конечным точкам в этом API, я хочу защитить конечные точки, которые не должны быть общедоступными. Некоторые останутся общедоступными для моей панели статистики.
У меня есть клиентский сертификат PKI, который я приобрел у официальной и признанной правительством организации для приложения, и в него включен URL-адрес ответчика OCSP. Когда приложение обращается к защищенным конечным точкам, этот сертификат включается. Теперь последним шагом для сервера будет проверка действительности этого сертификата во входящих запросах, и я придумал следующие возможные сценарии:
- Сертификат действителен
- Иерархия CA сертификата недействительна (я программист, поэтому прошу прощения, если я исказил это предложение)
- Срок действия сертификата истек (полагаю, что ответчик OCSP вернет это)
- Сертификат не прилагается.
Может ли IIS решить эту проблему? Я действительно нашел только OCSP-сшивание, которое не связано с клиентским сертификатом. По сути, TLS-рукопожатие должно быть отменено, чтобы API даже не мог быть достигнут.
Я использую HAProxy для маршрутизации запросов на нужный сервер в моей сети. Так если IIS невозможен, сможет ли HAProxy сделать это?
Спасибо!
решение1
IIS может проверять клиентские сертификаты с помощью OCSP. HAProxy, насколько мне известно, этого делать не будет. Лучше всего передавать клиентский сертификат на бэкэнд IIS.
Обратите внимание, что для проверки статуса отзыва сертификата вы используете только OCSP или список отзыва сертификатов (CRL) — больше ничего.
Таким образом, проверка сертификата по-прежнему будет состоять из проверки цепочки от сертификата до точки доверия, проверки того, что срок действия сертификата не истек, и проверки того, что сертификат используется для правильного использования ключа, независимо от того, используются ли OCSP (или списки отзыва сертификатов).