none
После обновления перестает работать метод класса System.Security.Cryptography.Xml.SignedXml RRS feed

  • Вопрос

  •  На разных ОС (Windows Server2016, Windows Serever 2008) после обновления перестает работать метод класса

    SignedXml, CheckSignature(X509Certificate2, bool). До обновления работает корректно, после обновления вываливается с ошибкой(Алгоритм ключа не поддерживается!). 

    21 декабря 2016 г. 9:29

Ответы

  • Ну так все правильно, алгоритм скомпрометирован, проверка заведомо невыполнима.

    Что делать:

    1. Подписывайте XML другим сертификатом который использует современный алгоритм (единственно правильное решение).

    2. Не проверяйте подпись, все равно алгоритм скомпрометирован и может быть подделан.

    3. Удалите апдейт который выключает SHA1.

    4. Попробуйте изменить конфигурацию проверки:

    https://technet.microsoft.com/en-us/library/dn375961.aspx


    This posting is provided "AS IS" with no warranties, and confers no rights.

    23 декабря 2016 г. 19:08
    Модератор

Все ответы

  • Я где то слышал что определенные алгоритмы которые были скомпрометированы (вроде SHA-1) собирались выключить как раз примерно сейчас. У вас что там в сертификате? Выведите, например. X509Certificate2.SignatureAlgorithm.FriendlyName.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    21 декабря 2016 г. 17:44
    Модератор
  • Ну вот так вот выглядит шапка подписанной XML (<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
    <Reference URI="">
    <Transforms>
    <Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116" />
    <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
    </Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
    <DigestValue>09PpPGOYohzJxeiSZ0t8Jl/TI0Y=</DigestValue>
    </Reference>
    </SignedInfo>)

    Действительно есть алгоритм sha1, только вопрос что теперь делать? Проблема возникает именно при проверки подписи. То есть, с помощью ключа подпись происходит, а вот именно проверка -нет. Смотреть в сторону смены алгоритма при проверки подписи и на момент самой подписи? Или это невозможно сделать, так как сам ключ использует алгоритм sha1(Алгоритм отпечатка)?


    • Изменено Bakharev Yury 23 декабря 2016 г. 11:56
    23 декабря 2016 г. 8:28
  • Ну так все правильно, алгоритм скомпрометирован, проверка заведомо невыполнима.

    Что делать:

    1. Подписывайте XML другим сертификатом который использует современный алгоритм (единственно правильное решение).

    2. Не проверяйте подпись, все равно алгоритм скомпрометирован и может быть подделан.

    3. Удалите апдейт который выключает SHA1.

    4. Попробуйте изменить конфигурацию проверки:

    https://technet.microsoft.com/en-us/library/dn375961.aspx


    This posting is provided "AS IS" with no warranties, and confers no rights.

    23 декабря 2016 г. 19:08
    Модератор