2012-04-10 2 views
1

Я хотел бы использовать XMLDSIG для проверки того, что файл .config не был подделан. Я также хочу иметь возможность verify the signature chain, чтобы я мог доверять сигнатуре.Могу ли я проверить подпись XMLDSIG в .NET, не требуя установки корневого сертификата?

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

Root CA -> Intermediate Signing CA -> Signing Key 

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

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

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

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

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

+0

Глупый вопрос, но у вас есть физическая копия всех подписания в сертификаты доверия цепи, не так ли? Они просто не установлены, правильно? – x0n

+0

Да. Я скопировал их в блок подписи, но я также могу легко включить их с кодом подтверждения. Я просто не хочу устанавливать корневой ЦС на машине каждого пользователя. –

ответ

0

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

http://www.madboa.com/geek/openssl/#verify-standard

Это немного крутой кривой обучения на первый, но очень мощная утилита.

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

Update

Там что-то здесь, возможно, что может помочь вам:

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

+0

Имеют сертификаты; должен сделать это в коде .NET. –

+0

обновлен ссылкой, которая может помочь. – x0n

 Смежные вопросы

  • Нет связанных вопросов^_^