Получение ошибки 107 (net:: ERR_SSL_PROTOCOL_ERROR): ошибка протокола SSL
Я знаю, что в stackoverflow есть много вопросов, связанных с тем же темами, но здесь у меня есть несколько разных проблем:
Я использовал installer class
to reserve a port
и bind it with hash
на win7/Winxp
:
if (Environment.OSVersion.Version.Major > 5)
{
startInfo.Arguments = @"/c netsh http add urlacl url=https://127.0.0.1:8083/ user=EVERYONE";
netsh http add sslcert ipport=127.0.0.1:8083 certhash=df03c4b0b32f3302a3b70abe6b5dfd864d0986a5 appid={00112233-4455-6677-8899-CCBBCCDDEEFF} clientcertnegotiation=enable;
}
else
{
startInfo.Arguments = @"/c httpcfg set urlacl /u https://127.0.0.1:8083/";
httpcfg set ssl -i 127.0.0.1:8083 -h df03c4b0b32f3302a3b70abe6b5dfd864d0986a5 -f 2
}
Нет ничего плохого в коде и setup project
. Все работает отлично, за исключением следующих пунктов:
- всякий раз, когда я устанавливал
exe
на win7
, он успешно запускает веб-службу WCF
.
-
Всякий раз, когда я использую WinXP(SP#)
на своей локальной машине, он выдает сообщение об ошибке:
Ошибка 107 (net:: ERR_SSL_PROTOCOL_ERROR): ошибка протокола SSL
-
Но когда я использую teamviewer для входа на любую виртуальную машину WinXp
, она выполняется успешно.
Как это возможно, я пробовал это несколько раз, но получил тот же результат. Он работает на Xp (работает на VM), но не на реальной машине XP?
Я написал что-то неправильно, чтобы связать и зарезервировать порт? Здесь играет роль брандмауэр?
Я также подтвердил это с помощью httpcfg query ssl
, и хэш успешно привязан к порту.
Любая помощь будет заметна.
IMO эта команда не работает: netsh http add urlacl url=https://127.0.0.1:8083/ user=EVERYONE
Я попытался выяснить ошибку с fiddler
, и он говорит:
"Failed to secure existing conection for <ipaddress>. Authentication failed because the remote party has closed the transport stream."
Ответы
Ответ 1
Конфигурация локальной машины XP, скорее всего, отличается от конфигурации виртуального. Один из сценариев, о которых я могу думать, заключается в том, что ИТ-отдел будет настраивать машину XP в одну сторону, а затем самостоятельно создавать виртуальную машину, просто используя настройки по умолчанию (которые отличаются). Я не говорю, что ваш сценарий конкретно, просто сценарий. Другим является то, что машина устарела/не обновлена, что связано не столько с проблемой конфигурации, сколько с наличием ошибок.
Во всяком случае, я бы сказал, что ваша установка XP неверно определяет, что сертификат недействителен, characerstic VM doesn ' т. Ваш комментарий о настройках брандмауэра также может быть точным - попробуйте Google.
Удачи!
Ответ 2
Это может показаться глупым, но некоторые приложения могут использовать SSL-порты, такие как Team Viewer или даже Skype. Попробуйте закрыть эти приложения, если у вас есть некоторые из них, запущенные на вашем компьютере!
Извините, это просто предположение:), но я надеюсь, что это поможет...
Ответ 3
Сделайте следующее SetUp berfoe, вызывающее вашу службу WCF
ServicePointManager.ServerCertificateValidationCallback =
delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
для более подробной информации см.:
Использование самозаверяющего сертификата с .NET HttpWebRequest/Response