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

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

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

Root CA -> Intermediate Signing CA -> Signing Key

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

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

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

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

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


person Roger Lipscombe    schedule 10.04.2012    source источник
comment
Глупый вопрос, но у вас есть физическая копия всех сертификатов подписи в цепочке доверия, верно? Они просто не установлены, верно?   -  person x0n    schedule 10.04.2012
comment
Ага. Я скопировал их в блок подписи, но я также могу легко включить их с кодом подтверждения. Я просто не хочу устанавливать корневой ЦС на машину каждого пользователя.   -  person Roger Lipscombe    schedule 10.04.2012


Ответы (1)