2010-01-21 31 views
2

在SSL/TLS握手過程中,客戶端發送一個支持的密碼套件列表,服務器選擇哪一個用於對話。 Windows有一個優先級密碼套件列表(可通過註冊表配置),並將選擇客戶端支持的列表中的第一個套件。一旦使用密碼套件標誌創建了可接受的密碼列表,那麼當OpenSSL充當服務器時,OpenSSL使用什麼算法來選擇密碼套件?我在OpenSSL文檔中找不到答案。OpenSSL服務器密碼選擇

+0

Thomas Pornin有正確的答案。我不確定你爲什麼接受另一個...... – Jumbogram 2011-05-24 02:04:37

回答

0

看看this manpage

cipherlist命令將OpenSSL密碼列表轉換爲有序SSL 密碼首選項列表。它可以用作測試工具來確定適當的密碼列表。

+3

這個答案是「服務器如何形成密碼套件列表」,但沒有回答被問到的問題,「服務器如何決定使用哪個密碼套件連接。' – Jumbogram 2011-05-24 02:16:21

20

客戶端發送的密碼套件列表是有序的;列表中的第一個套件是客戶最喜歡的套件。通常,作爲服務器的OpenSSL會尊重客戶端的偏好:它在客戶端和服務器都支持的套件列表中選擇客戶端最喜歡的套件。由於OpenSSL-0.9.7(2002年底發佈),OpenSSL有一個名爲SSL_OP_CIPHER_SERVER_PREFERENCE的程序化標誌,它強制服務器首選項:服務器支持的密碼套件列表也按照首選項進行排序,服務器在客戶端和服務器都支持的服務器中選擇服務器本身最喜歡的套件。該標誌記錄在ssl.h包含文件中。

通過命令行「s_server」命令,「-serverpref」選項用於激活SSL_OP_CIPHER_SERVER_PREFERENCE標誌。