Let’s Encript установка и настройка на Debian 8

  1. Обновляем пакеты.
    apt-get update && apt-get upgrade -Y
  2. Удаляем certbot если уже экспериментировали 🙂
    apt-get remove certbot
  3. Скачиваем certbot. Переносим в нужное нам место. Даем права и запускаем
    wget https://dl.eff.org/certbot-auto
    mv certbot-auto /usr/local/bin/certbot-auto
    chown root /usr/local/bin/certbot-auto
    chmod 0755 /usr/local/bin/certbot-auto

    /usr/local/bin/certbot-auto --nginx
  4. Запросит установку пакетов. Соглашаемся (Y).
  5. Потом просит адрес почты, куда будут приходить уведомления о выпуске или ошибках при выпуске сертификатов (так что указываем свой настоящий адрес почты)
  6. Далее он считал все домены, что у меня есть и предложил для них все создать.
    Так как у меня часть доменов имеют платные сертификаты и это уже рабочие проекты, то я отказался. Далее пойдет настройка «вручную».
  7. Для начала создал A запись нового поддомена на dns севере.
  8. Создаем служебную папку и ставим владельца www-data
    mkdir -p /var/www/letsencrypt
    chown www-data:www-data /var/www/letsencrypt
  9. Создаем файл /etc/nginx/letsencrypt.conf с следующим содержимым:
    location ^~ /.well-known/acme-challenge/ {
    default_type "text/plain";
    root /var/www/letsencrypt;
    }
    location = /.well-known/acme-challenge/ {
    return 404;
    }
  10. Добавляем в секцкию server инклуд на только, что созданный файл
    Include /etc/nginx/letsencript.conf;
  11. Тестирием конфигурацию nginx и если ок,то релодим.
    nginx -t
    nginx -s reload
  12. Тестируем получение сертификата:
    /usr/local/bin/certbot-auto certonly --dry-run --webroot -w /var/www/letsencrypt -d login.example.ru

    Если все прошло гладко должно быть примерно так:
    Saving debug log to /var/log/letsencrypt/letsencrypt.log
    Plugins selected: Authenticator webroot, Installer None
    Obtaining a new certificate Performing the following challenges:
    http-01 challenge for login.example.ru
    Using the webroot path /var/www/letsencrypt for all unmatched domains. Waiting for verification...
    Cleaning up challenges IMPORTANT NOTES:

    - The dry run was successful.
  13. Запускаем туже команду но уже без параметра —dry-run:
    /usr/local/bin/certbot-auto certonly --webroot -w /var/www/letsencrypt -d login.example.ru
  14. Ждем поздравления с указанием где лежат все файлы сертификата:
    Saving debug log to /var/log/letsencrypt/letsencrypt.log
    Plugins selected: Authenticator webroot, Installer None
    Obtaining a new certificate Performing the following challenges:
    http-01 challenge for login.example.ru
    Using the webroot path /var/www/letsencrypt for all unmatched domains. Waiting for verification...
    Cleaning up challenges
    IMPORTANT NOTES:
    - Congratulations! Your certificate and chain have been saved at:
    /etc/letsencrypt/live/login.example.ru/fullchain.pem
    Your key file has been saved at:
    /etc/letsencrypt/live/login.example.ru/privkey.pem
    Your cert will expire on 2019-08-11.
    To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again.
    To non-interactively renew *all* of your certificates,
    run "certbot-auto renew"
    - If you like Certbot, please consider supporting our work by:
    Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
    Donating to EFF: https://eff.org/donate-le
  15. Почти все. осталось переделать файл конфигурации домена:
server {
    listen 80;
    server_name login.example.ru;
    location / {
        return 301 https://$server_name$request_uri;
    }
    access_log off;
    error_log /var/log/login.example.ru.error.log;
}

server {
        listen 443 ssl;
        server_name login.example.ru;

        ssl_protocols TLSv1.1 TLSv1.2;
        ssl_certificate /etc/letsencrypt/live/login.example.ru/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/login.example.ru/privkey.pem;
        ssl_prefer_server_ciphers on;
        ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:10m;
        ssl_stapling on;
        ssl_stapling_verify on;
        include /etc/nginx/letsencrypt.conf;

        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET';

        access_log off;
        error_log /var/log/login.example.ru.error.log;

        root /var/www/login.example.ru/;
        index index.php;

        location / {
                try_files $uri @php_work;
        }
        location @php_work {
                fastcgi_pass 127.0.0.1:9001;
                fastcgi_param SCRIPT_FILENAME $document_root/index.php;
                include fastcgi_params;
                fastcgi_param QUERY_STRING url=$uri&$args;
        }
}

16. Тестируем конфигурацию и релодим:
nginx -t
nginx -s reload

17. Разные команды, которые пригодятся:

Тестирование продления сертификатов:

/usr/local/bin/certbot-auto renew --dry-run

Продление сертификатов:

/usr/local/bin/certbot-auto renew

Создаем файл для автопродления и ставим на крон раз в сутки:

#!/bin/sh

/usr/local/bin/certbot-auto renew --allow-subset-of-names

if [ $? -ne 0 ]nan
 then
        ERRORLOG=`tail /var/log/letsencrypt/letsencrypt.log`
        echo -e "The Let's Encrypt cert has not been renewed! \n \n" \
                 $ERRORLOG
 else
        nginx -s reload
fi
exit 0

Ну и на последок если нужно создать сертификат для домена и всех его поддоменов:

/usr/local/bin/certbot-auto certonly --webroot -w /var/www/letsencrypt -d "login.example.ru" -d "*.login.example.ru"
Регистрация:

/usr/local/bin/certbot-auto register -m admin@example.com

Источники:
certbot.eff.org
itc-life.ru
interface31.ru

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

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