当我使用SSLSCAN来检查我的服务器的密码套件时,我发现有三种状态:Accepted,Rejected和Failed。 之后,我尝试禁用RC2(40位)的密码。 我在[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ SCHANNEL \ Ciphers \ RC2 40/128]下创build了一个新的密钥“Enabled”= dword:00000000。 SSLSCAN显示EXP-RC2-CBC-MD5(40位)是“失败的”,而其余的RC2(40位)的密码是“拒绝的”。
所以这让我感到困惑:失败和拒绝之间的区别是什么? 我偶然发现了关于google的所有信息,包括SSLSCAN的主页,但还没有find明确的答案。
我想知道同样的事情,看看源代码( “Use the source,Luke!” :),它只是来自OpenSSL库的SSL_connect()的返回值 。 该文件指出:
Accepted ( 1 )的意思是:
TLS / SSL握手已成功完成,已build立 TLS / SSL连接。
Rejected ( 0 )表示:
TLS / SSL握手不成功,但是由TLS / SSL协议的规范控制closures 。 用返回值ret调用
SSL_get_error()来找出原因。
Failed ( <0 )表示:
TLS / SSL握手不成功 ,因为在协议级发生致命错误 或发生连接失败 。 关机不干净 。 它也可能发生[如果]行动需要继续对非阻塞BIO的操作。 用返回值ret调用
SSL_get_error()来找出原因。
如果https不可用,则后两者可以跟随N/A
所以我认为sslscan应该包含调用SSL_get_error()的--verbose或-v选项,并输出失败(或被拒绝)的实际原因。
这将是相当有用的。 因为现在不是。
现在,我所能推荐的是手动连接一个更真实的客户端,强制在客户端或服务器上使用某个密码,然后让它显示出实际的原因。
除非你想改善sslscan的代码,当然。 🙂