Как проверить, какая версия TLS my.Net клиент использует
Я поддерживаю сайт .NET, который (среди многих, многих, других вещей) разговаривает с удаленными API из систем поставщиков.
мы хотим обновить до поддержки TLS 1.2 Мы надеемся сделать это в соответствии с этим вопросом:есть ли .NET-реализация TLS 1.2?
но как я могу проверить, что это действительно работает, как только я внес изменения.
В идеале один из моих сайтов поставщиков начнет использовать TLS 1.2 только и тогда мой тест может быть - теперь мы можем поговорить с поставщиком?- Но у нас его нет. Я предполагаю, что могу сделать что-то с помощью какого-то анализатора пакетов, но я не знаю, что именно я искал, и как настроить сниффер для сбора необходимых данных читаемым образом.
либо:
- может ли кто-нибудь указать мне в направлении всеобъемлющего руководства по сбору этих данных в Fiddler/WireShark
или
- Can кто-то посоветует альтернативный способ проверить, что отработал смену.
3 ответов
Если вы захватите создание соединения в Wireshark и изучите первый пакет от клиента, то Wireshark будет аннотировать поля в ClientHello
struct для вас, включая версию TLS, запрошенную клиентом.
аналогично, если вы посмотрите на первый ответный пакет с сервера, то Wireshark будет аннотировать поля в ServerHello
struct для вас, включая версию TLS, установленную для соединения.
Если вы включите "подключение" в Саша, вы можете увидеть версию TLS/SSL в инспекторах - > TextView
чтобы включить подключение, перейдите в Rules
в меню удалить проверка из "скрыть подключения"
System.Net трассировка содержит достаточно деталей, чтобы проверить это, хотя она не очень доступна.
этот КБ описывает, как включить System.Net отслеживание.
это сообщение в блоге показывает полный запрос HTTPS в System.Net отслеживание.
байты, отправленные по проводу, регистрируются, и в примере, приведенном в этом сообщении в блоге, клиентский поток запускается:
System.Net.Sockets Verbose: 0 : [3848] Data from Socket#48285313::Send
System.Net.Sockets Verbose: 0 : [3848] 00000000 : 16 03 00 00 41 01 00 00-3D 03 00 43 26 02 90 83 : ....A...=..C&...
RFC5246 описывает TLS 1.2 и объясняет, что ClientHello является первым ожидаемым сообщением и указывает его формат:
struct {
ProtocolVersion client_version;
Random random;
SessionID session_id;
CipherSuite cipher_suites<2..2^16-2>;
CompressionMethod compression_methods<1..2^8-1>;
select (extensions_present) {
case false:
struct {};
case true:
Extension extensions<0..2^16-1>;
};
} ClientHello;
это так ответ объясняет что запись начинается с 0x16 в качестве маркера типа, а затем версии протокола.
сеанс, показанный выше, имеет версию 3.0, что означает SSL 3.0.
RFC объясняет это 3.3-TLS 1.2.
Итак, если ваши клиентские данные начинаются"16 03 03
", то ваш клиент попытка согласования TLS 1.2.
вам может потребоваться изучить ServerHello, чтобы установить, какая версия была фактически использована.