моя компания разработала приложение на основе .net (основанное на SChannel), направленное на выполнение взаимной аутентификации TLS1.2 между двумя экземплярами одного и того же ПО, один из которых действует как клиент, а другой - как сервер в сеансе взаимной аутентификации TLS1.2.
Экземпляры клиентского и серверного ПО были развернуты на разных серверах ОС Windows (2008R2 и 2012R2).
Мы успешно протестировали приложение на ОС Windows Server 2008 R2 (как «клиентские», так и «серверные» экземпляры ПО, работающие в ОС WIN 2008R2); в этом случае Сервер предоставляет в начальном сообщении «Server Hello» подтверждения TLS1.2 в разделе «Запрос сертификата» список «Отличительных имен», который соответствует содержимому хранилища сертификатов доверенного корневого ЦС (локальный Компьютер), работающий на том же сервере, в соответствии со стандартом TLS1.2 RFC.
Однако при запуске того же приложения (с использованием одного и того же набора сертификатов) в среде ОС Win2012 R2 во время сообщения Server Hello часть запроса сертификата продолжает возвращать пустой список DN (то есть в списке отображается 0 сертификатов), даже если тот же набор доверенных корневых центров сертификации доступен в хранилище доверенных корневых центров сертификации (локальный компьютер).
Когда ПО действует как клиент в подтверждении связи TLS1.2, выполняемом либо на 2008R2, либо на 2012R2, ПО может успешно использовать сертификат аутентификации клиента, доступный / установленный на Локальном компьютере -> Личные -> Сертификаты.
Я не участвовал в разработке кода криптографической функции программы, но мне кажется, что мне просто не хватает некоторых дополнительных настроек, введенных на уровне ОС при переходе с 2008R2 на 2012R2, вместо того, чтобы иметь проблему с программным обеспечением - поэтому мне было интересно, если любой может предложить возможные настройки ОС, которые, возможно, потребуется изменить.
Спасибо