我正在研究WebRTC Gateway的遗留代码。我更新了一个配置文件,用于禁用不安全的协议,如SSLv3,TLS1.1和TLS1.0,您可以在下面的代码片段中看到这些协议;
# Allowed cipher list.
cipher-list="TLSv1.2+HIGH:!TLSv1.1:!TLSv1:!SSLv3:!aNULL:!eNULL:!MD5:!DSS:!RC4:!PSK:!3DES:!DH:!EXPORT:!LOW:!SSLv2:@STRENGTH"
# Do not allow an SSL/TLS version of protocol
#
no-sslv2
no-sslv3
no-tlsv1
no-tlsv1_1
#no-tlsv1_2
然后我尝试使用此命令测试协议;
openssl s_client -tls1_2 -connect www.example.com:443
当我使用允许的协议执行命令时,没有失败并且发生握手。但是当我使用不允许的协议(如TLS1.1或TLS1.0)更改协议时,系统不允许握手,但等待直到超时,然后抛出异常。
如果我修改配置文件的协议列表如下(注释掉所有协议),则会立即抛出握手失败;
# Allowed cipher list.
cipher-list="TLSv1.2+HIGH:!TLSv1.1:!TLSv1:!SSLv3:!aNULL:!eNULL:!MD5:!DSS:!RC4:!PSK:!3DES:!DH:!EXPORT:!LOW:!SSLv2:@STRENGTH"
# Do not allow an SSL/TLS version of protocol
#
#no-sslv2
#no-sslv3
#no-tlsv1
#no-tlsv1_1
#no-tlsv1_2
我将更新产品说明,因此我试图深入了解此执行情况。有谁知道为什么这个系统行为如此?
感谢。