我的理解是,在ssl协商期间,客户端(即curl)向服务器发送一个密码列表,然后服务器回复其首选选择。
如何查看curl 发送的密码列表?
答案1
有一个网站提供curl 密码请求检测作为服务:
curl https://www.howsmyssl.com/a/check
但是,它并不接受所有密码 - 如果它们接受的密码之一不在您的curl发送的列表中,那么您将根本无法得到响应。
答案2
您可以使用Wireshark。例如,如果您设置“tcp port 443”的数据包过滤器,然后将显示过滤器设置为“ssl”,您将得到如下输出:
您可以看到“Client Hello”数据包显示了诸如 之类的密码套件TLS_AES_128_GCM_SHA256
。
答案3
这个答案 [1] 是一个好的开始,但它掩盖了如何实际创建自签名证书,并且如果没有这一部分,答案就无法工作。此外,他们链接到的文章 [2] 以及有关如何创建自签名证书的说明正在使用 OpenSSL,这对于某些目的很有用,但对于创建自签名证书可能并不理想,因为它使过程变得更加困难比它需要的要多。为此,我找到了另一个工具 [3],那要简单得多:
generate_cert -host localhost
它只是用 Go 编写的单个文件,没有外部依赖项。运行上述命令后,您可以使用 OpenSSL 或类似的命令来启动服务器:
openssl s_server -msg -accept 8080 -cert cert.pem -key key.pem
然后提出这样的请求:
curl -k https://localhost:8080