В Эстонии мы часто используем решения для смарт-карт, так как во многих местах они поддерживают национальную идентификацию. Я думаю, что вы выглядите немного смущенным - вам не нужен exec (). Что вам нужно, это настроить ваш веб-сервер (в данном случае IIS) для запроса клиента на сертификат. Это не имеет ничего общего с PHP. Это может быть сделано на основе пути, субдомена или тому подобного, и это может быть необязательным или обязательным. Например, мы часто настраиваем субдомен а-ля http://id.foobar, чтобы он был доступен только с идентификатором. Чипкарта является просто носителем для сертификата и ключей. Обычно это в любом случае "клиентский сертификат" и Google для него.
Можно настроить обязательное или необязательное требование сертификата клиента. Обязательное безопаснее, потому что люди без ID-карты не имеют возможности увидеть что-либо на вашем сервере. Но это также имеет недостаток - они также не могут видеть никаких сообщений об ошибках от вас. Мы часто используем необязательные требования.
На стороне PHP вы просто получаете какую-то переменную окружения. Вам нужно проверить его содержимое. Вы получаете то, что ищете, используя Google для SSL_CLIENT_S_DN. Это имя переменной, которую вы получаете при использовании веб-сервера Apache. Об IIS я ничего не знаю, но основы одинаковы, только переменные и параметры конфигурации названы по-разному.