В данной статье рассмотрим, как улучшить безопасность SSL сертификата, используя для этого настройку nginx. Для настройки https на сервере, необходимо включить SSL в конфигурационном файле nginx в разделе server.
Пример подключения сертификата в конфигурационном файле
server { listen 443 ssl; server_name www.example.com; ssl_certificate www.example.com.crt; ssl_certificate_key www.example.com.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; ….. }
Сертификат на сервере для определенного сайта – является публичным, он загружается пользователю, который обращается к серверу. Так же имеется секретный ключ, хранящийся на сервере, к нему рекомуендуется ограничить доступ только чтение. Есть возможность хранить ключ и сертификат в одном файле, при этом клиент получит только сертификат.
Существуют директивы, которые позволяют ввести ограничения на версии шифров SSL/TLS. Из примера выше в конфигурации nginx по умолчанию \испольуется протоколы TLSv1 TLSv1.1 TLSv1.2 и алгоритмы шифрования HIGH:!aNULL:!MD5
Улучшаем безопасность
Что бы исключить слабые шифры применим следующие параметры
ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA512:ECDH+AESGCM:ECDH+AES256:DH+AESGCM:DH+AES256:!aNULL:!eNULL:!LOW:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;
Далее необходимо закрыть уязвимость DH This server supports weak Diffie-Hellman (DH) key exchange parameter.
Необходимо сгенерировать ключ
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 4096
В результате генерации получится файл, который подключим в конфигурацию nginx
ssl_dhparam /etc/ssl/certs/dhparam4096.pem;
Оптимизируем работу
SSL использует ресурсы сервера, сессии SSL сохраняются в своем кэше, разделенном по рабочим процессам. 1 мегабайт содержит порядка 4тыс сессий. 5 минут – по умолчанию значение таймаута для кэша. Эти параметры можно менять и регулировать.
ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; ssl_session_tickets off;
Подключение и настройка SSL сертификата, обращайтесь [email protected]