letsencrypt - acme.sh
Загрузка...
Х

Настройка Let`s Encryption — acme.sh

В 2018 году SSL сертификат — уже неотъемлемая часть сайта, как например www. поддомен. Тем более, с июля Google будет помечать все сайты без SSL — как небезопасные. Поэтому тут я опишу небольшую инструкцию для установки сертификата с помощью acme.sh на базе алгоритма ECDSA P-256, этот алгоритм имеет высокий уровень быстродействия и защищенности. Например 256 битный ECDSA соответствует 3072 битному RSA по степени защиты, но при этом скорость работы в несколько раз выше.

1. Для начала мы установим скрипт, тут все достаточно просто. Но выполняйте такой способ только для проверенных скриптов, иначе высок риск получать гадость на сервер. Скрипт пропишет крон-здание для автообновления сертификатов, алиас в баш, ну и установим сам acme.sh:

curl https://get.acme.sh | sh

2. Теперь мы можем сгенерировать сертификат и ключ для домена, они будут лежать в ~/acme.sh/example.com/:

acme.sh --issue -w /home/wwwroot/example.com -d example.com -d www.example.com --keylength ec-256

3. Дальше необходимо создать папки для будущих сертификат, так как не рекомендовано ссылаться на них через ~/acme.sh/example.com/ — это путь временный и он может измениться. Поэтому создадим папки в /etc/nginx, например:

/etc/nginx/ssl/example.com

В нее мы скопируем цепочку сертификатов и ключ:

acme.sh --install-cert --ecc -d example.com --key-file /etc/nginx/ssl/example.com/example.com.key --fullchain-file /etc/nginx/ssl/example.com/example.com.crt --reloadcmd "service nginx force-reload"

При каждом обновлении сертификатов, они будут копироваться в эту папку и будет производиться перезапуск nginx.

4. Настройки nginx, которых будет достаточно для получение А+ в тесте ssllabs.com.

ssl_certificate /etc/nginx/ssl/example.com/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key;
include /etc/nginx/templates/ssl.conf;

Сам файл /etc/nginx/templates/ssl.conf, который я просто инклюдю к каждому домену:

  ssl_session_cache             shared:SSL:60m;
  ssl_session_timeout           1d;
  ssl_prefer_server_ciphers     on;
  ssl_protocols                 TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers                   EECDH:+AES256:-3DES:RSA+AES:RSA+3DES:!NULL:!RC4;
  ssl_stapling                  on;

  resolver                    8.8.8.8 8.8.4.4 valid=300s;
  resolver_timeout            10s;
  #add_header                  X-Frame-Options             "DENY";
  add_header                  X-Content-Type-Options      "nosniff";
  add_header                  Strict-Transport-Security   "max-age=31536000";

На этом все, мы научились выпускать сертификат для наших нужд и рассмотрели как его интегрировать в nginx. Если у вас остались вопросы, то прошу в комментарии к данной статье.

5 комментария у “Настройка Let`s Encryption — acme.sh
    1. Игорь Горгуль

      В nginx файлы подключаются просто
      include /path/to/file;
      Например я создаю файл с настройками ssl /etc/nginx/templates/ssl.conf;
      Потом просто подключают его ко всем ssl хостам:
      server {
      listen 443 ssl http2;
      ...
      include /etc/nginx/templates/ssl.conf;
      ...
      }

       
      Ответить
      1. Яша

        Я имею ввиду это подключение

        ssl_certificate /etc/nginx/ssl/example.com/fullchain.cer;
        ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key;
        ssl_trusted_certificate /etc/nginx/ssl/example.com/example.com.cer;

        мне непонятно, почему где-то используется
        ssl_trusted_certificate /etc/nginx/ssl/example.com/example.com.cer;
        а где-то
        ssl_dhparam /etc/nginx/ssl/example.com/dhparam.pem;

        У меня и на ssl_trusted_certificate получилось А+, но зачем тогда dhparam?

         
        Ответить
        1. Игорь Горгуль

          Извините за долгий ответ, почему-то уведомления не пришли, нужно будет проверить.
          В данной статье описан вариант, когда dhparam не нужен, так как это новый алгоритм работы ssl. Собственно ответ на ваш вопрос есть в документации:
          http://nginx.org/ru/docs/http/ngx_http_ssl_module.html#ssl_trusted_certificate

          «Задаёт файл с доверенными сертификатами CA в формате PEM, которые используются для проверки клиентских сертификатов и ответов OCSP, если включён ssl_stapling.

          В отличие от ssl_client_certificate, список этих сертификатов не будет отправляться клиентам.»

           
          Ответить

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.