2010-09-23 187 views
13

我正在使用函數SSL_CTX_set_cipher_list來設置SSL連接所支持的密碼。傳遞給SSL_CTX_set_cipher_list以禁用弱密碼的參數。在SSL連接中禁用弱密碼

我試圖通過ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH

,但它似乎並沒有工作。

我檢測以下爲啓用還是

 
** SSLv3:DES-CBC-SHA - ENABLED - WEAK 56 bits ** 

** TLSv1:DES-CBC-SHA - ENABLED - WEAK 56 bits ** 

** SSLv2:RC4-MD5 - ENABLED - WEAK 128 bits ** 
** SSLv2:RC2-CBC-MD5 - ENABLED - WEAK 128 bits ** 
** SSLv2:RC4-64-MD5 - ENABLED - WEAK 64 bits ** 
** SSLv2:DES-CBC-MD5 - ENABLED - WEAK 56 bits ** 
** SSLv2:EXP-RC4-MD5 - ENABLED - WEAK 40 bits ** 
** SSLv2:EXP-RC2-CBC-MD5 - ENABLED - WEAK 40 bits ** 
** SSLv2:DES-CBC3-MD5 - ENABLED - WEAK 168 bits ** 

傳遞什麼參數SSL_CTX_set_cipher_list禁用以上密碼弱密碼報告工具?

回答

12

高:!DSS:!aNULL @ STRENGTH應該工作。

OpenSSL的密碼-v 'HIGH:DSS:!@零位強度'打印密碼名單如下:

DHE-RSA-AES256-SHA  SSLv3 Kx=DH  Au=RSA Enc=AES(256) Mac=SHA1 
AES256-SHA    SSLv3 Kx=RSA  Au=RSA Enc=AES(256) Mac=SHA1 
EDH-RSA-DES-CBC3-SHA SSLv3 Kx=DH  Au=RSA Enc=3DES(168) Mac=SHA1 
DES-CBC3-SHA   SSLv3 Kx=RSA  Au=RSA Enc=3DES(168) Mac=SHA1 
DES-CBC3-MD5   SSLv2 Kx=RSA  Au=RSA Enc=3DES(168) Mac=MD5 
DHE-RSA-AES128-SHA  SSLv3 Kx=DH  Au=RSA Enc=AES(128) Mac=SHA1 
AES128-SHA    SSLv3 Kx=RSA  Au=RSA Enc=AES(128) Mac=SHA1 

OpenSSL的密碼字符串的完整列表及其含義看看:http://www.openssl.org/docs/apps/ciphers.html

+0

但是,我不確定爲什麼你的工具檢測到所有這些弱密碼。當您使用密碼列表時,OpenSSL確實只列出其中一個弱密碼,我不認爲DES-CBC3-MD5很弱。如果默認情況下未禁用SSLv2,您是否禁用了SSLv2?如果要刪除所有SSLv2密碼,可以嘗試將SSLv2追加到密碼列表。 – 2010-09-23 11:28:19

+0

如何清除DES-CBC3-SHA弱密碼? – Natim 2013-09-04 15:25:50

+3

只需將':!DES-CBC3-SHA'添加到密碼列表中即可將其刪除。 – 2013-09-04 15:51:03

1

傳遞什麼參數SSL_CTX_set_cipher_list禁用弱密碼

這取決於你正在使用的弱者的定義。在2015年,你必須從HIGH:!aNULL得到有效提升,因爲現代瀏覽器拒絕包含HIGH中包含的一些密碼。如果你允許MD5和/或RC4,那麼你得到obsolete cryptography warning

HIGH:!aNULL:!MD5:!RC4 

調用看起來就像這樣:

rc = SSL_CTX_set_cipher_list(ctx, "HIGH:!aNULL:!MD5:!RC4"); 
ASSERT(rc >= 1); 

您還應該禁用的SSLv2,SSLv3和可能壓縮。你這樣做,像這樣:

const long flags = SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_COMPRESSION; 
SSL_CTX_set_options(ctx, flags); 

SSL_CTX_set_options沒有返回值,所以沒有什麼測試,以確保調用成功。

+0

作者沒有要求某一年:) – jitter 2016-06-07 19:23:26

+0

不確定你的意思是抖動。就是這樣。 'HIGH'很高,但是它的別人的定義。在2014年和2015年,瀏覽器針對MD5,RC4,SHA1和1024位FF加密和IF加密。 FF是*** F *** inite *** F ***(如Diffie-Hellman),IF是*** I *** nteger *** F ***演員(如RSA)。 – jww 2016-06-07 20:33:00

+0

@jitter - 我不會責怪任何人。我並沒有聲稱任何事情是安全的或不安全的。我認爲我們不能根據「弱」,「強」或「高」等術語做出決定;相反,我們需要一個威脅模型或需求。再次,我不在乎你的答案,我不在乎它是如何比較的。你可以自由地做任何你想做的事情。我也不認爲是專家,但我確實有一些專業知識。這一切漫無目的的是什麼? – jww 2016-06-10 23:16:25