Подписание надстройки VSTO Excel для.NET Framework 4.0 с использованием сертификата SHA-2
У меня есть надстройка VSTO 2010 для Excel, предназначенная для.Net Framework 4.0, Visual Studio 2010.
В течение последних нескольких лет мы использовали сертификат SHA-1 для подписания манифеста и сборок. Приложение было развернуто для многих конечных пользователей. Теперь, когда политика устаревания SHA-1 вступает в силу с января 2016 года, обновленный сертификат, выданный ЦС, использует ключи SHA-256.
Пожалуйста, ознакомьтесь с файлами, созданными при создании надстройки VSTO для Excel 2010 с использованием различных версий Visual Studio:
ПРИМЕЧАНИЕ. Сертификат, используемый для всех следующих случаев, вводится с использованием алгоритма SHA-2.
.VSTO, созданный VS 2010 SP1, Target Framework 4.0:
DigestMethod
Алгоритм, упомянутый для dependentAssembly
"s hash
это SHA1, даже когда использовался сертификат SHA2.
<dependentAssembly dependencyType="install" codebase="ExcelAddIn1.dll.manifest" size="18274">
<assemblyIdentity name="ExcelAddIn1.dll" version="1.0.0.1" publicKeyToken="2142698160a31911" language="neutral" processorArchitecture="msil" type="win32" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<dsig:DigestValue>DIGEST VALUE</dsig:DigestValue>
</hash>
</dependentAssembly>
Под publisherIdentity
тег, SignatureMethod
и DigestMethod
используется SHA256, который соответствует алгоритму сертификата.
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" />
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
.VSTO, созданный VS 2013 SP4 и VS 2015, Target Framework 4.0:
Обратите внимание на алгоритм, упомянутый в <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
тег является SHA1. Что то же самое, что генерируется VS 2010.
<dependentAssembly dependencyType="install" codebase="ExcelAddIn1.dll.manifest" size="16058">
<assemblyIdentity name="ExcelAddIn1.dll" version="1.0.0.0" publicKeyToken="2142698160a31911" language="neutral" processorArchitecture="msil" type="win32" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<dsig:DigestValue>DIGEST VALUE</dsig:DigestValue>
</hash>
</dependentAssembly>
Точно так же под publisherIdentity
тег, SignatureMethod
а также DigestMethod
все еще используют SHA1. Сборка файла.vsto с использованием VS 2010 и VS 2013 SP1 здесь имеет SHA2.
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
Будет ли эта работа / поддерживаться даже после января 2016/17?
.VSTO, созданный VS 2013 SP4 и VS 2015, Target Framework 4.5.2:
Обратите внимание на алгоритм, упомянутый в <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha2" />
тег является SHA2.
<dependentAssembly dependencyType="install" codebase="ExcelAddIn1.dll.manifest" size="16058">
<assemblyIdentity name="ExcelAddIn1.dll" version="1.0.0.0" publicKeyToken="2142698160a31911" language="neutral" processorArchitecture="msil" type="win32" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha2" />
<dsig:DigestValue>DIGEST VALUE</dsig:DigestValue>
</hash>
</dependentAssembly>
SignatureMethod
а также DigestMethod
теперь указывают алгоритм SHA2.
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha2" />
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha2" />
Похоже, что обновление в VS 2013 SP3 (также доступно в VS 2015) использует / применяет алгоритм в соответствии с целевым назначением.Net Framework.
Для.Net Framework 4.0 DigestMethod и SigntureMethod всегда являются SHA1, независимо от используемого сертификата. Теперь надстройка работает на машине, имеющей только.Net 4.0, так как загрузчик VSTO/clickonce вообще не имеет отношения к SHA2.
Итак, учитывая, что сертификаты SHA-2 должны использоваться с января 2016 года, какую конфигурацию следует использовать для подписи надстройки с помощью сертификата SHA-2?
VS 2010,.Net Framework 4.0 и сертификат SHA-2 (не работает без.Net Framework 4.5 или более поздней версии, установленной на машине)
VS 2015,.Net Framework 4.0 и сертификат SHA-2 (это ничем не отличается от использования сертификатов SHA-1. Файлы VSTO содержат только записи SHA-1, не уверен, будет ли это работать после января 2016 года)
VS 2015,.Net Framework 4.5.2 и сертификат SHA-2 (мне не подходит. Мне нужно сохранить целевой фреймворк как 4.0)
Я устанавливаю надстройки Excel на компьютерах в автономном режиме. Они всегда загружаются из файловой системы.
[HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\ExcelAddin1]
"Description"="ExcelAddin1 - COM add-in created with Visual Studio Tools for Office"
"FriendlyName"="ExcelAddin1"
"Manifest"="file:///C:/published/Addins/ExcelAddin1.vsto|vstolocal"
"LoadBehavior"=dword:00000003
Спасибо.