OpenSSL服务器密码选择

问题描述:

在SSL/TLS握手过程中,客户端发送一个支持的密码套件列表,服务器选择哪一个用于对话。 Windows有一个优先级密码套件列表(可通过注册表配置),并将选择客户端支持的列表中的第一个套件。一旦使用密码套件标志创建了可接受的密码列表,那么当OpenSSL充当服务器时,OpenSSL使用什么算法来选择密码套件?我在OpenSSL文档中找不到答案。OpenSSL服务器密码选择

+0

Thomas Pornin有正确的答案。我不确定你为什么接受另一个...... – Jumbogram 2011-05-24 02:04:37

看看this manpage

cipherlist命令将OpenSSL密码列表转换为有序SSL 密码首选项列表。它可以用作测试工具来确定适当的密码列表。

+3

这个答案是“服务器如何形成密码套件列表”,但没有回答被问到的问题,“服务器如何决定使用哪个密码套件连接。' – Jumbogram 2011-05-24 02:16:21

客户端发送的密码套件列表是有序的;列表中的第一个套件是客户最喜欢的套件。通常,作为服务器的OpenSSL会尊重客户端的偏好:它在客户端和服务器都支持的套件列表中选择客户端最喜欢的套件。由于OpenSSL-0.9.7(2002年底发布),OpenSSL有一个名为SSL_OP_CIPHER_SERVER_PREFERENCE的程序化标志,它强制服务器首选项:服务器支持的密码套件列表也按照首选项进行排序,服务器在客户端和服务器都支持的服务器中选择服务器本身最喜欢的套件。该标志记录在ssl.h包含文件中。

通过命令行“s_server”命令,“-serverpref”选项用于激活SSL_OP_CIPHER_SERVER_PREFERENCE标志。