繁体   English   中英

pyOpenSSL 密码列表失败

[英]pyOpenSSL Cipher List failure

在 Apache 中,我成功地使用了以下 OpenSSL 密码设置:

SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM \
                EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 \
                EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 \
                EECDH EDH+aRSA \
                !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"

我试图在 python (Twisted) 服务器中模拟它,但服务器不会提供任何指定了可比较密码列表的页面。 我究竟做错了什么? 这是蟒蛇(本质上是……)

     from OpenSSL import SSL
....
     httpSslContext = ssl.DefaultOpenSSLContextFactory(...)
     ctx = httpSslContext.getContext()                
     ctx.set_options( SSL.OP_CIPHER_SERVER_PREFERENCE )                 
     ctx.set_cipher_list( "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:EDH+aRSA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4" )   
...

如果我将密码列表更改为“RC4-SHA”之类的简单内容,或者甚至是“DEFAULT:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK: !SRP:!DSS:!RC4"。 我设置了一些其他选项,例如例外协议,但我不知道这是否相关...

请注意,此处使用了相同的密码列表: Python Paste SSL server with TLSv1.2 and Forward Secrecy

出于同样的原因,我试图达到相同的结果,但遇到了一些问题。 我现在想知道是否存在 pyOpenssl 版本差异? 是否不允许使用 EECDH 密码? 我也不能使用 ctx.set_tmp_ecdh() ......

问题确实是无法使用 context.set_tmp_ecdh(),这是由于没有安装新版本的 pyOpenSSL。 请参阅: 为什么 pyOpenSSL 中未定义 context.set_tmp_ecdh()? . 解决了这个问题。

当您指定密码列表时,这并不是最终实现的密码。 connection.get_cipher_list()(我在 context.set_info_callback() 函数中调用)将在考虑其他所有内容时显示实际结果。

旧版本的 pyOpenSSL 不能使用 EECDH(椭圆曲线)密码。 因此,它们不可用,而且我的首选密码列表在某些浏览器上不起作用。

另一方面,Apache 没有这个问题,并且允许开箱即用地使用这些密码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM