如何在 uWSGI 中配置 SSL/TLS 協議的白名單?
我可以使用指定密碼列表
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"
配置選項禁用 SSLv3。可選的密碼字元串雖然有用,但不能真正用於將 使用的 SSL/TLS 協議版本列入白名單(或禁用)uwsgi
,只能用於密碼套件。要查看禁用 SSLv2 支持,我們從
uwsgi_opt_https
解析"https"
選項的函式開始。在解析證書、密鑰、密碼套件等之後,該函式呼叫uwsgi_ssl_new_server_context
.
uwsgi_ssl_new_server_context
函式在這裡定義。特別感興趣的是預設 SSL 選項標誌,其中包括SSL_OP_NO_SSLv2
. 而且,最有趣的是,我們看到也將SSL_OP_NO_SSLv3
使用選項標誌(用於禁用 SSLv3 支持),但前提是此uwsgi.sslv3
變數設置為 false。怎麼可以
uwsgi.sslv3
設置為假?為此,我們在這裡"ssl-enable3"
看到您可以在uswgi
配置中設置一個選項:[uwsgi] ... ssl-enable3 = false
現在,對於獎勵積分,您可能還想禁用 TLSv1,並將 TLSv1.1 和 TLSv1.2 列入白名單。為此,您必須執行上述操作並使用
"ssl-option"
配置選項,例如:[uwsgi] ... ssl-enable3 = false ssl-option = 67108864
我是怎麼想出這個神奇的數字“67108864”的?該
"ssl-option"
選項採用數字,而不是字元串。因此,我們需要我們要設置的 OpenSSL 標誌的名稱,然後確定該標誌的數值。所以首先我必須查看 OpenSSLSSL_CTX_set_options
文件以了解我想要SSL_OP_NO_TLSv1
標誌的值。數值可在OpenSSL 原始碼中找到:0x04000000U
. 但是uwsgi
想要一個整數值"ssl-option"
,而不是十六進制,因此:$ perl -e 'print int(0x04000000), "\n";' 67108864
希望這可以幫助!