C++ OpenSSL:密码设置列表 我有非常基础的C++应用程序,使用OpenSSL库。应用程序向服务器发送请求,密码套件列表必须是下一个:

C++ OpenSSL:密码设置列表 我有非常基础的C++应用程序,使用OpenSSL库。应用程序向服务器发送请求,密码套件列表必须是下一个:,c++,openssl,C++,Openssl,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53 使用SSL_set_cipher_list和SSL_set_cipher套件,我正在设置密码列表。但当我使用下一个列表时: TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384 TLS_CHACHA20_Poly 1305_SHA256 TLS_ECDHE_ECDSA_与_AES_128_GCM_SHA25

4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53

使用SSL_set_cipher_list和SSL_set_cipher套件,我正在设置密码列表。但当我使用下一个列表时: TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384

TLS_CHACHA20_Poly 1305_SHA256

TLS_ECDHE_ECDSA_与_AES_128_GCM_SHA256

TLS_ECDHE_RSA_与_AES_128_GCM_SHA256

TLS_ECDHE_ECDSA_与_AES_256_GCM_SHA384

TLS_ECDHE_RSA_与_AES_256_GCM_SHA384

TLS_ECDHE_ECDSA_与_CHACHA20_poly 1305_SHA256

TLS_ECDHE_RSA_与_CHACHA20_poly 1305_SHA256

TLS_ECDHE_RSA_与_AES_128_CBC_SHA

TLS_ECDHE_RSA_与_AES_256_CBC_SHA

TLS_RSA_和_AES_128_GCM_SHA256

TLS_RSA_与_AES_256_GCM_SHA384

TLS_RSA_与_AES_128_CBC_SHA

TLS_RSA_与_AES_256_CBC_SHA


我得到的是4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53-255。但我不明白255到底从何而来?它不应该出现。

255是一个特殊的密码套件标识符。在处理安全问题时,阅读RFC总是很有用的

3.3。重新协商保护请求信令密码套件值 SSLv3和TLS 1.0/TLS 1.1规范都要求实现忽略ClientHello之后的数据,即扩展,如果它们不理解数据。但是,在这种情况下,一些SSLv3和TLS1.0实现错误地使握手失败。这意味着提供重新协商信息扩展的客户端可能会遇到握手失败。为了增强与此类服务器的兼容性,本文档通过特殊的信令密码套件值SCSV TLS_EMPTY_RENEGOTIATION_INFO_SCSV定义了第二种信令机制,代码点为{0x00,0xFF}。此SCSV不是真正的密码套件,它不符合任何有效的算法集,无法协商。相反,它与空的重新协商信息扩展具有相同的语义,如以下部分所述。由于SSLv3和TLS实现可靠地忽略未知密码套件,因此可以将SCSV安全地发送到任何服务器。SCSV也可以包含在SSLv2向后兼容的客户端中,见[RFC5246]的附录E.2


现在您知道名称TLS_EMPTY_RENEGOTIATION_INFO_SCSV,您可以尝试排除它。但这可能不起作用。

谢谢!您能帮我一下吗,删除TLS\u EMPTY\u Reagination\u INFO\u SCSV的正确方法是什么?只使用“!”in-string不起作用,只有在过时的版本中才可能。你不应该为此担心。有用的阅读: