Назад | Перейти на главную страницу

Как настроить белый список протоколов SSL / TLS в uWSGI?

Я могу указать список шифров, используя 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 не повлияет.