2012-02-15 2 views
1

У меня есть два сертификата аутентификации клиентов, выданные одним и тем же центром сертификации. Один из них позволяет мне подключиться к HTTPS веб-сервиса, а другой нет, когда я использую код, подобный следующему:Тайм-аут установления связи SSL

HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(endPointUrl); 
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine); 
store.Open(OpenFlags.MaxAllowed); 
X509CertificateCollection col = (X509CertificateCollection)store.Certificates.Find(X509FindType.FindBySerialNumber, certificateSerialNumber, true); 
httpWebRequest.ClientCertificates.Add(col[0]); 
httpWebRequest.Method = "POST"; 
httpWebRequest.ContentType = contentType; 
httpWebRequest.KeepAlive = false; 
httpWebRequest.Timeout = 3000; 
httpWebRequest.ContentLength = message.Length; 
httpRequestStream = httpWebRequest.GetRequestStream(); 

При попытке получить поток запроса, я получаю InvalidOperationException с сообщением « время работы ».

Я использовал System.Net.trace при попытке подключения к сертификату, который терпит неудачу, и в журнале отображается тайм-аут подключения до «Попытка перезапуска сеанса с использованием предоставленного пользователем сертификата» и сразу после первого InitializeSecurityContext.

Wireshark показывает следующее:

"TCP","j-link > https [SYN] Seq=0 Win=65535 Len=0 MSS=1260 SACK_PERM=1" 
"TCP","https > j-link [SYN, ACK] Seq=0 Ack=1 Win=32768 Len=0 MSS=1380" 
"TCP","j-link > https [ACK] Seq=1 Ack=1 Win=65535 Len=0" 
"TLSv1","Client Hello" 
"TLSv1","Server Hello" 
"TCP","[TCP segment of a reassembled PDU]" 
"TCP","j-link > https [ACK] Seq=78 Ack=2521 Win=65535 Len=0" 
"TLSv1","Certificate, Certificate Request, Server Hello Done" 
"TCP","j-link > https [ACK] Seq=78 Ack=3187 Win=64869 Len=0" 
"TCP","j-link > https [FIN, ACK] Seq=78 Ack=3187 Win=64869 Len=0" 
"TCP","https > j-link [ACK] Seq=3187 Ack=79 Win=32768 Len=0" 
"TLSv1","Alert (Level: Warning, Description: Close Notify)" 
"TCP","j-link > https [RST, ACK] Seq=79 Ack=3194 Win=0 Len=0" 

Я могу подключиться с помощью OpenSSL из командной строки, используя оба сертификата после их экспорта и преобразования их в формат PEM.

Любые предложения были бы весьма полезными.

ответ

1

Благодарим вас за Shawn's question, что помогло мне устранить проблему с тайм-аутом, из-за которого соединение прошло более 60 секунд.

У меня получилось: «Запрос был прерван: не удалось создать безопасный канал SSL/TLS». ошибка, которая была решена с использованием Windows HTTP Services Certificate Configuration Tool и информации I, полученной here.

Смежные вопросы