Здесь задействовано несколько различных частей программного обеспечения.
Во-первых, это сама карта. Для выполнения цифровой подписи CAC должен находиться в «проверенном» состоянии, что означает, что PIN-код был введен после того, как карта была вставлена. Кроме того, каждый ключ на карте имеет флажок, который указывает, нужно ли вводить PIN-код каждый раз, когда используется ключ. Я не проверял, но думаю, что это установлено для пары ключей «электронная почта» в CAC. Таким образом, вам нужно будет найти, для каких ключей установлен этот флаг «всегда проверять», и настроить средство проверки пути в службе, чтобы принимать только эти ключи. Возможно, вы сможете потребовать определенный OID в расширенном использовании ключа или исключить некоторые промежуточные сертификаты Министерства обороны США из построения пути (возможно, пометив их как отозванные).
Промежуточное ПО на машине, взаимодействующей с картой, также может кэшировать ПИН-код и предоставлять его карте всякий раз, когда карта указывает, что ей требуется ПИН-код, прежде чем она завершит операцию. Я думаю, что ActivClient делал это с помощью своей функции кэширования PIN-кода до версии 6, но в версии 7 эта опция, похоже, отсутствует. Я не нашел ничего подобного во встроенной поддержке Windows PIV. Эта «функция» может поставить под угрозу безопасность, поэтому я предполагаю, что она была удалена преднамеренно, и не было никаких взломов реестра или иных способов восстановления поведения. Это то, что вы не сможете контролировать, если не будете управлять машинами пользователей; нет заголовка HTTP или параметра TLS, который можно использовать для принудительного ввода PIN-кода. Но с более новыми системами это не должно быть проблемой.
На стороне сервера должно произойти полное рукопожатие, чтобы клиент выполнил аутентификацию. Аутентификация клиента не произойдет, если есть действительный сеанс TLS. Таким образом, вам нужно найти способ аннулировать сеанс TLS (а не сеанс приложения, который, вероятно, привязан к файлу cookie HTTP) перед запросом аутентификации или направить запрос аутентификации на другой интерфейс, для которого сеансы не включены.
person
erickson
schedule
26.11.2009