【发布时间】:2016-09-29 12:10:12
【问题描述】:
我正在开发一个 SSL-Cipher-Scanner。这意味着我指定主机和端口,我的程序会告诉我主机接受哪些密码。
我当前的版本可以工作,但速度很慢(每台主机大约 20 到 30 秒),因为我为每个密码打开了一个新连接。
我使用以下方法(按此顺序):
ssl_ctx = SSL_CTX_new(method);
bio = BIO_new_ssl_connect(ssl_ctx);
BIO_set_conn_port(bio, port);
BIO_set_conn_hostname(bio, host);
BIO_get_ssl(bio, &ssl);
SSL_set_cipher_list(ssl, cipher);
BIO_do_connect(bio);
BIO_do_handshake(bio);
我现在尝试再次设置密码列表并再次握手而不是再次连接。在wireshark中,我看到它实际上使用了更改密码规范协议,但服务器返回了一个加密警报(所以我不能告诉你它是哪一个)。的返回值
SSL_set_cipher_list(ssl, cipher);
和
BIO_do_handshake(bio);
都是1所以应该是成功的。
谁能帮助我了解如何在打开的连接上更改使用的密码?
一些附加信息:我使用 openssl 版本 1.0.2h
【问题讨论】:
-
查看sslscan 的源代码。它主要使用 OpenSSL 做同样的事情,但在工作流程中的时间与您尝试的时间不同。最初的项目前段时间被放弃了,但 GitHub 上有很多现代分支。
-
警报已在旧密码套件中加密,因此您应该能够看到它是什么。它还表明服务器不支持请求的新密码套件。
标签: c ssl networking encryption openssl