Вопрос или проблема
Я хочу использовать curl
, чтобы получить идентификатор сессии. Есть ли способ получить идентификатор сессии с помощью curl
? Ранее я использовал Open SSL для захвата идентификатора сессии. Сейчас я не хочу этого делать.
Я попытался отправить эту команду:
curl_7_35_0 -v -k -tls1.2 --sessionid 'not_sure_what_to_use_here' https://30.1.1.101/ssl_ecdhe.txt
Я что-то упускаю здесь? Если да, пожалуйста, сообщите мне.
Вывод с OpenSSL:
Cli31(runs)# /usr/local/ssl/bin/openssl s_client -connect 30.1.1.101:443 -tls1_2 -servername 20.1.1.1 -reconnect -crlf
CONNECTED(00000003)
depth=0 C = US, ST = California, L = San Jose, O = A10Networks Inc., OU = QA, CN = www.automationserver.com, emailAddress = [email protected]
verify error:num=18:self signed certificate
verify return:1
depth=0 C = US, ST = California, L = San Jose, O = A10Networks Inc., OU = QA, CN = www.automationserver.com, emailAddress = [email protected]
verify return:1
---
Цепочка сертификатов
0 s:/C=US/ST=California/L=San Jose/O=A10Networks Inc./OU=QA/CN=www.automationserver.com/[email protected]
i:/C=US/ST=California/L=San Jose/O=A10Networks Inc./OU=QA/CN=www.automationserver.com/[email protected]
---
Сертификат сервера
-----BEGIN CERTIFICATE-----
MIICkTCCAjigAwIBAgIJAMSTNrUEbSQ4MAkGByqGSM49BAEwgaUxCzAJBgNVBAYT
AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMREwDwYDVQQHDAhTYW4gSm9zZTEZMBcG
A1UECgwQQTEwTmV0d29ya3MgSW5jLjELMAkGA1UECwwCUUExITAfBgNVBAMMGHd3
dy5hdXRvbWF0aW9uc2VydmVyLmNvbTEjMCEGCSqGSIb3DQEJARYUaW5mb0BhMTBu
ZXR3b3Jrcy5jb20wHhcNMTQxMTE0MDk0ODU2WhcNMjQxMTExMDk0ODU2WjCBpTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExETAPBgNVBAcMCFNhbiBK
b3NlMRkwFwYDVQQKDBBBMTBOZXR3b3JrcyBJbmMuMQswCQYDVQQLDAJRQTEhMB8G
A1UEAwwYd3d3LmF1dG9tYXRpb25zZXJ2ZXIuY29tMSMwIQYJKoZIhvcNAQkBFhRp
bmZvQGExMG5ldHdvcmtzLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEIt
e+YKJNyZtyshcoELz8raSxvviLnYElxSdhedUSWluLOdV7RQFvcA7vUSSXpJkKCN
LFSsN3ZuLe0bEOfe/RyjUDBOMB0GA1UdDgQWBBRdh99xn941eV8A/zYpsSWKE8vW
cjAfBgNVHSMEGDAWgBRdh99xn941eV8A/zYpsSWKE8vWcjAMBgNVHRMEBTADAQH/
MAkGByqGSM49BAEDSAAwRQIhAOvWNfesjT2CPQjEDato2C84lEXeOGx8wKxDKKLV
7kxfAiBDcWCPPXPQLfW/PtEn+yrRNyrd2KDKk3uU3CvviFJt6w==
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=San Jose/O=A10Networks Inc./OU=QA/CN=www.automationserver.com/[email protected]
issuer=/C=US/ST=California/L=San Jose/O=A10Networks Inc./OU=QA/CN=www.automationserver.com/[email protected]
---
Имена CA клиентских сертификатов не отправлены
Алгоритм подписи пиров: SHA256
Временный ключ сервера: ECDH, P-256, 256 бит
---
SSL рукопожатие прочитало 1010 байт и записало 475 байт
---
Новый, TLSv1/SSLv3, шифр ECDHE-ECDSA-AES128-SHA
Открытый ключ сервера имеет 256 бит
Поддерживается безопасное повторное согласование
Сжатие: НЕТ
Расширение: НЕТ
ALPN не согласован
SSL-сессия:
Протокол : TLSv1.2
Шифр : ECDHE-ECDSA-AES128-SHA
ID-сессии: 0AABABCBB2C24ABD3D5BD4B84A1914EC563E3D518108A89487A6B056BB879CC4
Контекст ID-сессии:
Мастер-ключ: BCD8B034C67DB603132FB69295FEB996628502A08BE9E58BAF03D365A8FFCC03E117A4D836BB782AAA2D65424686BB2A
Аргумент ключа: Нет
Личность PSK: Нет
Подсказка идентификации PSK: Нет
Имя пользователя SRP: Нет
Время начала: 1503310272
Таймаут : 7200 (сек)
Код возврата проверки: 18 (самоподписанный сертификат)
---
разорвать соединение и затем переподключиться
CONNECTED(00000003)
---
Повторно использовано, TLSv1/SSLv3, шифр ECDHE-ECDSA-AES128-SHA
Поддерживается безопасное повторное согласование
Сжатие: НЕТ
Расширение: НЕТ
ALPN не согласован
SSL-сессия:
Протокол : TLSv1.2
Шифр : ECDHE-ECDSA-AES128-SHA
ID-сессии: 0AABABCBB2C24ABD3D5BD4B84A1914EC563E3D518108A89487A6B056BB879CC4
Контекст ID-сессии:
Мастер-ключ: BCD8B034C67DB603132FB69295FEB996628502A08BE9E58BAF03D365A8FFCC03E117A4D836BB782AAA2D65424686BB2A
Аргумент ключа: Нет
Личность PSK: Нет
Подсказка идентификации PSK: Нет
Имя пользователя SRP: Нет
Время начала: 1503310272
Таймаут : 7200 (сек)
Код возврата проверки: 18 (самоподписанный сертификат)
---
разорвать соединение и затем переподключиться
CONNECTED(00000003)
---
Повторно использовано, TLSv1/SSLv3, шифр ECDHE-ECDSA-AES128-SHA
Поддерживается безопасное повторное согласование
Сжатие: НЕТ
Расширение: НЕТ
ALPN не согласован
SSL-сессия:
Протокол : TLSv1.2
Шифр : ECDHE-ECDSA-AES128-SHA
ID-сессии: 0AABABCBB2C24ABD3D5BD4B84A1914EC563E3D518108A89487A6B056BB879CC4
Контекст ID-сессии:
Мастер-ключ: BCD8B034C67DB603132FB69295FEB996628502A08BE9E58BAF03D365A8FFCC03E117A4D836BB782AAA2D65424686BB2A
Аргумент ключа: Нет
Личность PSK: Нет
Подсказка идентификации PSK: Нет
Имя пользователя SRP: Нет
Время начала: 1503310272
Таймаут : 7200 (сек)
Код возврата проверки: 18 (самоподписанный сертификат)
---
разорвать соединение и затем переподключиться
CONNECTED(00000003)
---
Повторно использовано, TLSv1/SSLv3, шифр ECDHE-ECDSA-AES128-SHA
Поддерживается безопасное повторное согласование
Сжатие: НЕТ
Расширение: НЕТ
ALPN не согласован
SSL-сессия:
Протокол : TLSv1.2
Шифр : ECDHE-ECDSA-AES128-SHA
ID-сессии: 0AABABCBB2C24ABD3D5BD4B84A1914EC563E3D518108A89487A6B056BB879CC4
Контекст ID-сессии:
Мастер-ключ: BCD8B034C67DB603132FB69295FEB996628502A08BE9E58BAF03D365A8FFCC03E117A4D836BB782AAA2D65424686BB2A
Аргумент ключа: Нет
Личность PSK: Нет
Подсказка идентификации PSK: Нет
Имя пользователя SRP: Нет
Время начала: 1503310272
Таймаут : 7200 (сек)
Код возврата проверки: 18 (самоподписанный сертификат)
---
разорвать соединение и затем переподключиться
CONNECTED(00000003)
---
Повторно использовано, TLSv1/SSLv3, шифр ECDHE-ECDSA-AES128-SHA
Поддерживается безопасное повторное согласование
Сжатие: НЕТ
Расширение: НЕТ
ALPN не согласован
SSL-сессия:
Протокол : TLSv1.2
Шифр : ECDHE-ECDSA-AES128-SHA
ID-сессии: 0AABABCBB2C24ABD3D5BD4B84A1914EC563E3D518108A89487A6B056BB879CC4
Контекст ID-сессии:
Мастер-ключ: BCD8B034C67DB603132FB69295FEB996628502A08BE9E58BAF03D365A8FFCC03E117A4D836BB782AAA2D65424686BB2A
Аргумент ключа: Нет
Личность PSK: Нет
Подсказка идентификации PSK: Нет
Имя пользователя SRP: Нет
Время начала: 1503310272
Таймаут : 7200 (сек)
Код возврата проверки: 18 (самоподписанный сертификат)
---
разорвать соединение и затем переподключиться
CONNECTED(00000003)
---
Повторно использовано, TLSv1/SSLv3, шифр ECDHE-ECDSA-AES128-SHA
Поддерживается безопасное повторное согласование
Сжатие: НЕТ
Расширение: НЕТ
ALPN не согласован
SSL-сессия:
Протокол : TLSv1.2
Шифр : ECDHE-ECDSA-AES128-SHA
ID-сессии: 0AABABCBB2C24ABD3D5BD4B84A1914EC563E3D518108A89487A6B056BB879CC4
Контекст ID-сессии:
Мастер-ключ: BCD8B034C67DB603132FB69295FEB996628502A08BE9E58BAF03D365A8FFCC03E117A4D836BB782AAA2D65424686BB2A
Аргумент ключа: Нет
Личность PSK: Нет
Подсказка идентификации PSK: Нет
Имя пользователя SRP: Нет
Время начала: 1503310272
Таймаут : 7200 (сек)
Код возврата проверки: 18 (самоподписанный сертификат)
---
GET /ssl_ecdhe.txt HTTP/1.0
read:errno=104
Я не думаю, что существует опция --sessionid
для curl или что-то подобное, что вы могли бы использовать здесь. Это также не имело бы смысла, так как идентификатор сессии TLS (и токен сессии) оба относятся к внутренним состояниям SSL из существующего рукопожатия TLS, которого у клиента curl нет.
Ответ или решение
Получение идентификатора сессии TLS с помощью curl версии 7.35 — это не самая тривиальная задача, поскольку curl изначально не предоставляет прямых инструментов для извлечения информации о сессии TLS, таких как идентификатор сессии (Session ID). Это связано с тем, что сессия TLS управляется на более низком уровне, и curl не предоставляет интерфейсы для взаимодействия с этими данными, в отличие от OpenSSL.
Факты и понимание текущего состояния
F (Fact, Факт): Вы хотите извлечь идентификатор сессии TLS с удаленного сервера по протоколу HTTPS без использования OpenSSL. В прошлом вы успешно пользовались OpenSSL для достижения этой цели.
R (Relevance, Актуальность): Эта задача может быть полезной, например, при диагностике сетевых соединений или проверке безопасности соединений. Однако, curl предназначен в первую очередь для простых HTTP-запросов и не предоставляет прямого параметра для извлечения идентификаторов сессий TLS.
Определение методов и решений
O (Offer, Предложение): Хотя curl сам по себе не может предоставить идентификатор сессии TLS, существуют некоторые обходные методы, которые могут быть полезными:
-
Трассировка TCP: Использование сторонних инструментов, таких как tcpdump или Wireshark, для монитора и анализа сетевого трафика. Эти инструменты могут захватывать пакеты, в которых будут видны идентификаторы сессии внутри записей протокола TLS.
-
Интеграция с OpenSSL: Несмотря на ваше желание избегать OpenSSL, можно комбинировать выводы curl и OpenSSL для достижения цели. Например, после выполнения команды curl, запустите всесторонний анализ сессии через OpenSSL, чтобы проверить повторное использование сессий.
Применение конкретных техник
R (Resolve, Решение проблемы): Если использовать curl версии 7.35, чтобы найти информацию о сессии через стандартные возможности инструмента, вам, скорее всего, придётся внести изменения в более глубинную часть кода или переключиться на использование более специализированных библиотек для работы с TLS.
Краткое резюме и заключительные мысли
E (End, Завершение): С учетом всех обстоятельств, curl является удобным инструментом для большинства HTTP-запросов, однако получение низкоуровневых данных о TLS-сессиях лучше выполнять с помощью инструментов, таких как OpenSSL или сетевые анализаторы. Рекомендуем использовать современные инструменты для сетевого мониторинга и анализа, которые позволяют глубже погружаться в технические детали, сохраняя простоту в интерфейсе.
S (Success, Успех): Надеемся, что это объяснение поможет вам справиться с получением необходимой информации о сессиях и усилит ваши профессиональные навыки в области IT.