В этой статье опишу небольшую инструкцию для установки сертификата с помощью 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, список этих сертификатов не будет отправляться клиентам.»
Если у вас остались дополнительные вопросы, пишите в комментариях, попробуем обсудить.И помните что не один мануал не опишет всё в точности как требуется вам. Применяйте смекалку.