Не удается подключиться к серверу по протоколу HTTPS, который использует сертификат SHA2 с помощью MSXML2.ServerXMLHTTP


Мы обновили наш SSL-сертификат до SHA2, но промежуточным сертификатом был SHA1. Chrome и другие браузеры решили, что вся цепочка должна быть SHA2. Наши клиенты звонили обеспокоенные желтым предупреждением в адресной строке. Ходят слухи, что через несколько месяцев Chrome и другие браузеры заменят мягко ненавязчивую осторожность на стоп-экран. Мы, конечно, не хотим этого!

...

Таким образом, мы переоформили сертификат, и новый подписан SHA2 промежуточное звено. Когда мы используем этот сертификат для шифрования трафика на нашем сервере, наши приложения, использующие MSXML2.ServerXMLHTTP (работает под управлением Windows Server 2003) для доступа к удаленным веб-службам на этом сервере больше не может подключиться.

После исследования мы применили эти два исправления, которые выглядели так, как будто они могли бы решить эту проблему:

Https://support.microsoft.com/kb/938397/en-us https://support.microsoft.com/kb/968730/en-us

Но проблема сохраняется. Переключите сертификат обратно на SHA2 с SHA1 intermediate, и у нас не будет проблем.

Мы установили промежуточный сертификат SHA2 в доверенном хранилище, но проблема сохраняется.

Мы попытались указать все версии MSXML2.ServerXMLHTTP и все терпят неудачу.

Код ASP:

function query(xml)

    dim xmlhttp, xmlDoc, url

    url = application("component_url")

    set xmlhttp = server.createobject("MSXML2.ServerXMLHttp")
    call xmlhttp.open ("POST", url, false)
    call xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")

    on error resume next
        err.clear   

        call xmlhttp.send(xml)

        if err.number <> 0 then
            call sendAlert("An error has occurred while trying to send your request", message)
        else
            dim rt
            rt = ConvertUtf8BytesToString(xmlhttp.responseBody)
            set xmlDoc = server.createobject("MSXML2.DomDocument")          
            xmlDoc.loadXml(rt)
        end if
    on error goto 0

    set query = xmlDoc
    set xmlHttp = nothing
    set xmlDoc = nothing
end function
1 12

1 ответ:

Ваша ситуация, скорее всего, такая же, как эта запись, особенно последний ответ, как вы упомянули, сценарий работает уже более 10 лет.

Цитирую последний ответ полностью:

Я знаю, что это старый вопрос. Эта проблема может быть из-за неподдерживаемые наборы шифров. Попробуйте добавить - TLS_RSA_WITH_AES_128_CBC_SHA AES128-SHA-TLS_RSA_WITH_AES_256_CBC_SHA AES256-SHA

Это означает, что вы должны следовать этому kb: http://support.microsoft.com/kb/948963 это обновление также интересно если вы все еще используете windows 2003. Что позволит подключиться к сайт с использованием SHA2 - http://support.microsoft.com/kb/968730

Обратите внимание, что поддержка Windows Server 2003 заканчивается 14 июля 2015 года

Если код выполняется на Windows Server 2003, я предлагаю вам попробовать его на более новой машине, возможно, на ноутбуке с Windows 7 для быстрого тестирования.