Подписание надстройки 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?

  1. VS 2010,.Net Framework 4.0 и сертификат SHA-2 (не работает без.Net Framework 4.5 или более поздней версии, установленной на машине)

  2. VS 2015,.Net Framework 4.0 и сертификат SHA-2 (это ничем не отличается от использования сертификатов SHA-1. Файлы VSTO содержат только записи SHA-1, не уверен, будет ли это работать после января 2016 года)

  3. 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

Спасибо.

0 ответов

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