Ответ 1
Эта ошибка появилась в рабочем приложении С# после миграции веб-сайта, доступ к которому был получен на новый сервер, и это указывает на проблему на стороне сервера. В самом деле, мы, наконец, решили эту проблему, установив значение "ServerName" в файле конфигурации Apache в соответствии с именем домена, зарегистрированным в сертификате. (Еще один форум отметил, что установка "ServerAlias" также будет работать.)
В частности, файл httpd.conf для сайта SSL имел следующий раздел в разделе VirtualHost:
ServerName www.secure.mydomain.com
Сертификат был зарегистрирован на secure.mydomain.com
, а URL, к которому мы обращались, также был https://secure.mydomain.com/test.html
.
Итак, просто изменив файл conf на следующий и перезапустив Apache, сделал трюк:
ServerName secure.mydomain.com
Возможно, также работало следующее:
ServerName www.secure.mydomain.com
ServerAlias secure.mydomain.com
Здесь приведена дополнительная дополнительная информация для дальнейшего использования:
Две ошибки, которые мы видели в System.Net.trace.log, были следующими:
System.Net.Sockets Error: 0 : [4316] Exception in the
Socket#18796293::Receive - A blocking operation was
interrupted by a call to WSACancelBlockingCall
System.Net Error: 0 : [4316] Exception in the
HttpWebRequest#35191196:: - The operation has timed out
Вот все, что мы пробовали, которые не решили проблему:
- установка промежуточных сертификатов из поставщика сертификатов SSL в Apache (требуется)
- изменение пользовательского агента в веб-запросе (бездействия)
- изменение тайм-аутов на стороне сервера и на стороне клиента и ограничений памяти (бездействия)
- тестирование со статической страницей (без эффекта)
- тестирование с другими сайтами https (они отлично работали)
- добавление сертификата в хранилище доверенных сертификатов (бездействия)
- приобрести и установить сертификат у другого издателя сертификата (бездействия)
- сравнить файлы виртуального хоста .conf с известного рабочего сервера на проблемном сервере (это привело нас к решению проблемы).
URL https можно было бы открыть в Opera, IE8 и Firefox без проблем. WGET для Windows жаловался на недопустимый сертификат, но опять же, WGET является старым приложением и, похоже, не доверяет столько сертификатов.
Клиентское приложение С# работало под управлением Windows XP, но не в Windows 7 или Windows Vista. Похоже, что Windows 7 и Vista более агрессивны в отношении проверки сертификата. Они не предоставляют информационное сообщение об ошибке, когда он терпит неудачу, а вместо этого просто время ожидания во время установления связи SSL.