gnutls-cli зависает при тестировании ssl-соединения
Я управляю командой
gnutls-cli -s facebook.com -p 443 --x509cafile /etc/ssl/certs/ca-certificates.crt -d 999
и вывод
|<2>| p11: loaded provider 'p11-kit-trust'
|<2>| p11: loaded provider 'gnome-keyring'
|<2>| ASSERT: pkcs11.c:425
Processed 164 CA certificate(s).
Resolving 'facebook.com'...
Connecting to '173.252.120.6:443'...
|<4>| REC[0x872bac8]: Allocating epoch #0
- Simple Client Mode:
а затем мигающий курсор, он просто висит там. Используя strace, я вижу, что после выполнения нескольких строк кода он достигает точки, где он просто печатает
выберите (6, [0 5], NULL, NULL, {0, 50000}) = 0 (время ожидания)
Снова и снова и снова. Я пытался обновить gnutls до 3.1.23, но результат тот же. Запуск от имени пользователя root не меняет результат.
В качестве проверки работоспособности я также побежал:
openssl s_client -connect facebook.com:443 -CAfile /etc/ssl/certs/ca-certificates.crt
и это создает успешное соединение ssl. Кто-нибудь знает, почему gnutls-cli может делать это... или что я могу сделать, чтобы он этого не делал? Я пытаюсь отладить более крупную проблему, и я думаю, что это может быть напрямую связано с этим...
Ubuntu 14.04
gnutls-cli 3.1.23
2 ответа
Вы командная строка не так. Вместо
gnutls-cli -s facebook.com -p 443 --x509cafile /etc/ssl/certs/ca-certificates.crt -d 999
Это должно быть
gnutls-cli -p 443 --x509cafile /etc/ssl/certs/ca-certificates.crt -d 999 facebook.com
Смотрите использование:
Usage: gnutls-cli [options] hostname
...
-s, --starttls Connect, establish a plain session and
start TLS when EOF or a SIGALRM is
received.
Таким образом, он фактически установил простое соединение и ждал EOF от терминала, и только после этого он начинал с рукопожатия SSL.
Попробуйте следующее: Предоставьтеgnutls-cli
с вводом со стандартного ввода , например, с помощью префикса с конвейеромtrue
:
true | gnutls-cli -s facebook.com -p 443 --x509cafile /etc/ssl/certs/ca-certificates.crt -d 999