Каждый запрос - это полное рукопожатие ssl, как повторно использовать сеанс ssl?
.NET Framework 4.x
У меня есть HTTP-клиент с C#, я нахожу HTTPS
запрос - это всегда полное рукопожатие. Но если использовать Postman для запроса, он будет повторно использовать сеанс SSL с помощью session_ticket.
Это захват пакетов через wirehark:
client hello
Extension:session_ticket(len=0)
sever hello
Extension:session_ticket(len=0)
New Session Ticket
Handshake Protocol: New Session Ticket
Handshake Type: New Session Ticket (4)
Length: 214
TLS Session Ticket
Session Ticket Lifetime Hint: 100800 seconds (1 day, 4 hours)
Session Ticket Length: 208
Session Ticket: 50bb2ffffb6ba4e17cdb6d4c6239f8decd2d590d97b01db4…
Каждый пакет запроса такой же, как указано выше.
Если использовать почтальон для запроса,
client hello
Extension:session_ticket(len=208)
Кто-нибудь это знает?
это мой HTTP-клиент
ServicePointManager.ServerCertificateValidationCallback = validationCallback;
if (strUrl.StartsWith("https"))
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;// | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls | SecurityProtocolType.Ssl3;
}
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(strUrl);
httpWebRequest.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.CacheIfAvailable);
httpWebRequest.Method = "POST";
httpWebRequest.ContentType = "application/octet-stream";
httpWebRequest.Timeout = 30000; ///10s
httpWebRequest.ReadWriteTimeout = 30000; ///10s
httpWebRequest.KeepAlive = false;
httpWebRequest.ContentLength = bytes.Length;
httpWebRequest.Headers.Add("CustomKey", ident.ToString());
httpWebRequest.BeginGetRequestStream(new AsyncCallback(WriteCallback), new RequestState(httpWebRequest, bytes));