我正在运行命令
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,我看到在执行好几行代码之后,达到了刚才打印的点
select(6,[0 5],NULL,NULL,{0,50000})= 0(超时)
一而再,再而三。 我试着将gnutls升级到3.1.23,但结果是一样的。 以根用户身份运行不会改变结果。
作为一个健康检查,我也跑了:
openssl s_client -connect facebook.com:443 -CAfile /etc/ssl/certs/ca-certificates.crt
它确实创build了一个成功的ssl连接。 有谁知道为什么gnutls-cli可能会这样做…或者我能做些什么来使它不这样做? 我试图debugging一个更大的问题,我认为这可能与此直接相关…
Ubuntu 14.04 gnutls-cli 3.1.23
你的命令行是错误的。 代替
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.
所以它实际上build立了一个普通的连接,并从terminal等待EOF,并且只有在它之后才会以SSL握手开始。