Поддержка неизвестного критического расширения сертификата 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, чтобы оно его распознало.
Есть ли способ сделать это? Или либо удалить расширение, либо заставить фреймворк признать его худшей «плохой идеей», чем позволить ему потерпеть неудачу и точно проверить, почему это произошло?