У меня недостаточно очков, чтобы комментировать, но я хотел согласиться с @Jay. Вероятно, вам нужно настроить эту стороннюю библиотеку для доверия корневым сертификатам DoD, чтобы, когда пользователь CAC представлял свой клиентский сертификат, ваше приложение могло ему доверять.
Корневые сертификаты DoD общедоступны:
http://dodpki.c3pki.chamb.disa.mil/rootca.html
Кроме того, если наблюдаемое вами поведение заключается в том, что клиенту даже не предлагается выбрать сертификат клиента, или вы не наблюдаете отправку сертификата клиента в трассировке пакета, то это также может быть связано с тем, что ваш сервер не доверяйте DoD CA. Когда сервер с хорошим поведением запрашивает сертификат клиента, он также объявляет отличительные имена (dn) ЦС, которым он доверяет. Затем клиент с хорошим поведением проверит этот список и сравнит эти имена с эмитентами сертификатов, которые он имеет в наличии. Если совпадений нет, клиент отправит «нулевой» сертификат. Я знаю, что IIS / Apache и Firefox / IE / Chrome ведут себя таким образом. Однако Opera, похоже, не проводит дискриминацию по объявленным эмитентам и отправляет любые сертификаты, которые есть у клиента.