Поддержка неизвестного критического расширения сертификата X509 в Windows или .NET.

Я пытаюсь проверить цепочку сертификатов в .NET (4.5.2) с помощью , и моя цепочка не будет проверяться, потому что конечный сертификат имеет критическое расширение (Apple Pay), которое, предположительно, не распознается базовым механизмом безопасности, который Windows предоставляет платформу .NET.

В настоящее время я могу обойти это, убедившись, что единственными ошибками в цепочке сертификатов являются ошибки, которые, по-видимому, вызваны этим расширением:

  • один элемент в листе с из X509ChainStatusFlags.InvalidExtension
  • один элемент в листе ChainElementStatusс Statusиз (X509ChainStatusFlags)0x08000000(забавно, что IDE дает этому имя HasNotSupportedCriticalExtensionно это значение не существует в перечислении; Я предполагаю, что это связано с изменениями .NET framework)
  • что у листа есть Criticalрасширение с ожидаемым OID

Однако это кажется грязным. Я бы скорее сказал фреймворку заранее ожидать этого расширения, чем проверять, что оно не удалось по правильным причинам.

Я нашел этот вопрос о том, как добиться этого с помощью BouncyCastle (хотя это связано с изменением источника), но не могу найти способ сделать это с помощью встроенного X509Chainучебный класс.

Я также не могу найти способ «установить» это расширение в Windows, чтобы оно его распознало.

Есть ли способ сделать это? Или либо удалить расширение, либо заставить фреймворк признать его худшей «плохой идеей», чем позволить ему потерпеть неудачу и точно проверить, почему это произошло?

0 ответов

Другие вопросы по тегам