В этой статье опишу небольшую инструкцию для установки сертификата с помощью acme.sh на базе алгоритма ECDSA P-384, этот алгоритм имеет высокий уровень быстродействия и защищенности. Например 256 битный ECDSA соответствует 3072 битному RSA по степени защиты, но при этом скорость работы в несколько раз выше.
Установка acme.sh
| |
Получение сертификата
Метод 1 : использование одной и той же директории для всех acme challenge запросов
Первоначально нам необходимо создать файл acme.conf в директории /etc/nginx/common/ со следующим содержанием:
| |
После этого установим пользователя www-data (или вашего) владельцем директории /var/www/html :
| |
Последним шагом нам нужно включить acme.conf в вашу конфигурацию виртуального хоста nginx, добавлением следующей строки :
| |
Перечитываем конфигурацию nginx командой service nginx reload и уже сейчас вы можете получить свой первый сертификат с помощью acme.sh:
ECDSA Certificates (384 Bits)
| |
Метод 2 : используем Cloudflare DNS API
Настраиваем ваши API ключи
| |
ECDSA Certificates (384 Bits)
| |
Устанавливаем SSL сертификат в Nginx
НЕ ИСПОЛЬЗУЙТЕ сертификаты в директории ~/.acme.sh/, они только для служебного использования, структура директории может измениться в будущем. Создайте директорию для хранения ваших сертификатов в продакшене.
| |
После этого используйте команду –install-cert что бы скопировать ваши сертификаты с помощью acme.sh :
for ECDSA certs
| |
При каждом обновлении сертификатов, они будут копироваться в эту папку и будет производиться перезапуск nginx.
Сейчас вам осталось лишь добавить сертификаты в вашу конфигурацию nginx. Создайте два файла, первый для добавления SSL сертификата со следующим содержимым:# /var/www/yourdomain.tld/conf/nginx/ssl.conf
| |
И второй для редиректа с http на https:# /etc/nginx/conf.d/forcessl-yourdomain-tld.conf
| |
Для получение А+ в тесте ssllabs.com я включаю файл /etc/nginx/ssl.conf в конфигурацию каждого домена
| |
Обновление сертификатов
Все сертификаты будут обновлены автоматически каждые 60 дней. Но вы можете выполнить принудительное обновление командами :
RSA certs
| |
ECDSA certs
| |
Ответы на вопросы
В данной статье описан вариант, когда dhparam не нужен, так как это новый алгоритм работы ssl. Детали есть в документации: http://nginx.org/ru/docs/http/ngx_http_ssl_module.html#ssl_trusted_certificate
«Задаёт файл с доверенными сертификатами CA в формате PEM, которые используются для проверки клиентских сертификатов и ответов OCSP, если включён ssl_stapling. В отличие от ssl_client_certificate, список этих сертификатов не будет отправляться клиентам.»
Если у вас остались дополнительные вопросы, пишите в комментариях, попробуем обсудить.И помните что не один мануал не опишет всё в точности как требуется вам. Применяйте смекалку.