Могу ли я проверить подпись 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