Доверенный сертификат pfx не работает с атрибутом InternalsVisibleTo

Я получил доверенный сертификат от Comodo CA и с трудом заставлял его работать с атрибутом InternalsVisibleTo. Я получаю предупреждение о том, что сборка недействительна и не может быть решена. Я получил открытый ключ с помощью X509Certificate.GetPublicKeyString() и поместил его в сборку.

[assembly:System.Runtime.CompilerServices.InternalsVisibleTo("Assemblyname,PublicKey=MyPublicKey"]

До сих пор мы использовали недоверенный сертификат, и он прекрасно с ним работает. Я заметил, что PublicKey доверенного сертификата (.pfx) имеет длину 540 символов, а недоверенный (.snk) - всего 320.

Где моя ошибка?

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

1 ответ

Решение

Трудно сказать, в чем проблема, не пытаясь сделать то же самое сам. Может быть, формат открытого ключа возвращается X509Certificate.GetPublicKeyString() это не формат InternalsVisibleTo надеется. Тем не менее, вы можете использовать sn (Strong Name Tool), который был разработан только для работы со строгими именами ключей.

Он расположен в C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin (количество SDK\ системного диска и т. д. может отличаться, но вы поняли).

Сначала экспортируйте открытый ключ с помощью этой команды (запросит пароль, если pfx защищен паролем):

sn -p YourComodoCert.pfx YourComodoCert.snk

Затем экспортируйте открытый ключ в виде строки через:

sn -tp YourComodoCert.snk > YourComodoCert_pub.txt

Откройте YourComodoCert_pub.txt в текстовом редакторе, там вы найдете раздел "Открытый ключ" - скопируйте ключ оттуда и используйте в InternalsVisibleTo,

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