Могу ли я проверить подпись XMLDSIG в.NET, не требуя установки корневого сертификата?

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

У меня есть три сертификата в цепочке:

Root CA -> Intermediate Signing CA -> Signing Key

Я проверяю, что файл подписан ключом, выданным промежуточным центром сертификации.

Я хотел бы сделать это без установки каких-либо сертификатов в хранилище сертификатов Windo ws пользователя. Это самозаверяющие сертификаты, поэтому не каждый пользователь захочет, чтобы я установил их в своем корневом хранилище. У меня нет проблем с их установкой в моем корневом хранилище.

У меня есть оригинальные файлы.CER - они включены в блок Signature, и я могу включить их в код подтверждения. Я могу построить цепочку сертификатов из этого с помощью X509ChainPolicy.ExtraStore,

Если сертификаты не установлены в корневом хранилище, и я проверяю цепочку, то X509Chain.Build возвращается falseи цепь имеет X509ChainStatusFlags.UntrustedRoot в этом.

Могу ли я добавить доверенные сертификаты только на время этой операции?

1 ответ

Решение

Предполагая, что у вас есть физические копии открытых ключей ВСЕХ сертификатов подписи в цепочке доверия, это возможно с помощью инструмента командной строки OpenSSL.

http://www.madboa.com/geek/openssl/

Сначала это крутая кривая обучения, но очень мощная утилита.

Если у вас нет сертификатов подписи, вы не сможете ничего проверить. Это было бы то же самое, что пытаться проверить человеческую подпись, не увидев оригинал. Вам не с чем сравнивать, так как вы можете проверить подлинность?

Обновить

Здесь есть что-то, что может вам помочь:

http://social.msdn.microsoft.com/Forums/eu/clr/thread/1966a6e8-b6f4-44d1-9102-ec3a26426789

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