Обновлено: 27 марта 2017, 14:41
 Marabar

Let's Encrypt для MODX

Здесь будет показан пример настройки сертификата SSL от Let's Encrypt для сайта, работающего на MODX revolution. Установка производится на ОС Ubuntu 14-04, сервер NGINX.

Установка Let's Encrypt
sudo apt-get update
sudo apt-get install -y git
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
cd /opt/letsencrypt
sudo ./letsencrypt-auto

В каталоге, где находятся сайты создаём директорию для Let's Encrypt. Здесь он будет сохранять временный файл для проверки домена на который выдаётся SSL.
cd /var/www
sudo mkdir letsencrypt

Устанавливаем необходимые разрешения для сервера
sudo chgrp www-data letsencrypt

Создаём директорию для конфигов
sudo cd /etc/letsencrypt
sudo mkdir configs

Создаём конфиг и открываем его. my-domain заменить на название вашего сайта.
sudo nano /configs/my-domain.conf

Помещаем в конфиг следующие строчки
# the domain we want to get the cert for;
# technically it's possible to have multiple of this lines, but it only worked
# with one domain for me, another one only got one cert, so I would recommend
# separate config files per domain.
domains = marabar.ru, www.marabar.ru

# increase key size
rsa-key-size = 2048 # Or 4096

# the current closed beta (as of 2015-Nov-07) is using this server
server = https://acme-v01.api.letsencrypt.org/directory

# this address will receive renewal reminders
email = marat@marabar.ru

# turn off the ncurses UI, we want this to be run as a cronjob
text = True

# authenticate by placing a file in the webroot (under .well-known/acme-challenge/)
# and then letting LE fetch it
authenticator = webroot
webroot-path = /var/www/letsencrypt/

Далее в конфиг вашего сервера NGINX нужно добавить блок location. В моём случае это config NGINX для marabar.ru — /etc/nginx/conf.d/marabar.conf
server {
        listen                          80;
        server_name                     marabar.ru www.marabar.ru;

        location /.well-known/acme-challenge {
                root /var/www/letsencrypt;
        }
	...
	...
	...
}

Сохраняем и рестартуем сервер
sudo service nginx restart

Теперь можно получить сертификат. Не забываем подставлять название своего сайта вместо my-domain
cd /opt/letsencrypt
sudo ./letsencrypt-auto --config /etc/letsencrypt/configs/my-domain.conf certonly

Если всё прошло нормально, то в ответ придёт примерно следующее
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/marabar.ru/fullchain.pem. Your cert will
   expire on 2016-11-27. To obtain a new or tweaked version of this
   certificate in the future, simply run letsencrypt-auto again. To
   non-interactively renew *all* of your certificates, run
   "letsencrypt-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

Замечательно! Открываем опять /etc/nginx/conf.d/marabar.conf и добавляем следующие строчки…
В общем, всё что касается SSL у меня выглядит так:
server {
        listen                          80;
        listen                          443 ssl;
        server_name                     marabar.ru www.marabar.ru;

        keepalive_timeout               70;
        ssl_certificate                 /etc/letsencrypt/live/marabar.ru/fullchain.pem;
        ssl_certificate_key             /etc/letsencrypt/live/marabar.ru/privkey.pem;

        ssl_protocols                   TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers                     HIGH:!aNULL:!MD5;


        root                            /patch/to/sait/httpdocs;
        access_log                      /patch/to/sait/logs/access.log;
        error_log                       /patch/to/sait/logs/error.log;
        index                           index.php index.html;
        rewrite_log                     on;

        add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";

        if ($host = "www.marabar.ru") {
                rewrite                 ^ $scheme://marabar.ru$uri permanent;
        }

        if ($scheme != "https") {
                rewrite                 ^ https://marabar.ru$uri permanent;
        }

        location /.well-known/acme-challenge {
                 root /var/www/letsencrypt;
        }
	...
	...
	...
}

Идём в MODX и правим системные настройки:
  • link_tag_scheme — 1
  • server_protocol — https

Рестартуем сервер
sudo service nginx restart

Готово. Если всё сделано правильно, то сайт уже будет работать в защищённом режиме.
Небольшой штрих — в блок http, основного конфига NGINX добавляем строчки:
http {
	...
	...
	ssl_session_cache   shared:SSL:10m;
    	ssl_session_timeout 10m;
	...
	...
}

Автоматическое обновление сертификатов


Сертификаты Let's Encrypt действительны только в течении 90 дней, после чего их нужно обновлять.
Настроим обновление сертификатов по крону.
Я создаю в директории root необходимые каталоги и исполняемый файл extend-marabar.sh: /root/cron/letsencrypt/extend-marabar.sh
Делаем файл исполняемым:
cd /root/cron/letsencrypt
sudo chmod +x extend-marabar.sh

В файл копируем
#!/bin/sh

cd /opt/letsencrypt/
./letsencrypt-auto renew 

if [ $? -ne 0 ]
 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

Директория для логов должна существовать, необходимо проверить. Если нет, создать — /var/log/letsencrypt/

Остаётся добавить запись в крон
0 0 1 JAN,MAR,MAY,JUL,SEP,NOV * /root/cron/letsencrypt/extend-marabar.sh
Сертификаты будут обновляться раз в два месяца первого числа.

При написании этой шпаргалки многое взято отсюда.

На этом всё.
   Marabar Инструкции 0    1 0

Комментарии ()




    Вы должны авторизоваться , чтобы оставлять комментарии.

    - - 03 ноября 2019, 17:53
    msMCD 1
    Marabar 21 сентября 2018, 00:32
    Login в MODX revolution 25
    Marabar 17 мая 2018, 12:22
    Выводим облако тегов в MODX revo 17
    medortex 14 июля 2017, 16:26
    Меню Аккордеон в MODX revo 54
    Madao 16 мая 2017, 18:28
    msMiniCartDynamic 3
    Семён 05 мая 2017, 23:30
    Создание ресурсов из фронтенда 41
    Филитович Владимир 26 февраля 2017, 22:25
    Apache 2.2.22, установка и настройка 41