Я могу указать список шифров, используя 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 автоматически отключен, и что SSLv3 можно отключить с помощью "ssl-enable3"
вариант конфигурации. Необязательный шифры строка, хотя и полезна, на самом деле не может использоваться для внесения в белый список (или отключения) версий протокола 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
установить значение false? Для этого мы видим Вот что есть "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, который мы хотим установить, а затем определить числовое значение этого флага. Итак, сначала мне пришлось взглянуть на OpenSSL SSL_CTX_set_options
документации, чтобы убедиться, что мне нужна ценность SSL_OP_NO_TLSv1
флаг. Числовое значение находится в Исходный код OpenSSL: 0x04000000U
. Но uwsgi
хочет целочисленное значение для "ssl-option"
, а не шестнадцатеричный, поэтому:
$ perl -e 'print int(0x04000000), "\n";'
67108864
Надеюсь это поможет!
Просто в дополнение к предыдущему ответу. Вы должны указать ssl-option в конфигурации uwsgi перед опцией https-socket. В противном случае ваша конфигурация ssl не повлияет.