我可以使用https = =0,x.crt,x.key,<ciphers>指定一个https = =0,x.crt,x.key,<ciphers> 。 相关文档在这里: http : //uwsgi-docs.readthedocs.org/en/latest/HTTPS.html#setting-ssl–tls-ciphers
但是,还有一种方法可以指定允许哪些SSL / TLS协议?
我想要禁用SSLv2和SSLv3。
从读取uwsgi源代码看起来,SSLv2自动禁用,并且可以使用"ssl-enable3"configuration选项禁用SSLv3。 可选的密码string虽然有用,但不能真正用于白名单(或禁用) uwsgi使用的SSL / TLS协议版本,只能使用密码套件。
要查看SSLv2支持已禁用,我们从parsing"https"选项的uwsgi_opt_https函数开始。 在parsing证书,密钥,密码套件等之后 ,该函数调用uwsgi_ssl_new_server_context 。
这里定义了 uwsgi_ssl_new_server_context函数。 特别感兴趣的是默认的SSL选项标志 ,其中包括 SSL_OP_NO_SSLv2 。 而且,最有趣的是,我们看到SSL_OP_NO_SSLv3选项标志(用于禁用SSLv3支持)也将被使用,但只有当这个uwsgi.sslv3variables设置为false时 。
如何将uwsgi.sslv3设置为false? 为此,我们在这里看到,可以在uswgiconfiguration中设置一个"ssl-enable3"选项:
[uwsgi] ... ssl-enable3 = false
现在,对于奖励积分,您可能还想要禁用TLSv1,并将白名单仅限于TLSv1.1和TLSv1.2。 为了实现这一点,你必须做到上述, 并使用"ssl-option"configuration选项, 例如 :
[uwsgi] ... ssl-enable3 = false ssl-option = 67108864
我怎么拿出这个魔法数字“67108864”? "ssl-option"选项带有一个数字 ,而不是一个string。 因此,我们需要我们想要设置的OpenSSL标志的名称,然后确定该标志的数字值。 所以首先,我必须看看OpenSSL SSL_CTX_set_options文档,看看我想要SSL_OP_NO_TLSv1标志的值。 数值在OpenSSL源代码中find : 0x04000000U 。 但是uwsgi希望"ssl-option"的整数值不是hex,因此:
$ perl -e 'print int(0x04000000), "\n";' 67108864
希望这可以帮助!