AVE!ML
  • Главная
  • Моды
  • Гайды
  • Новости
  • Блог
  • Самые честные казино
  • Контакты
  • Вход / Регистрация

Получение сертификата SSL/HTTPS на DLE (CentOS 7 LEMP)

Блог DLE, SSL, HTTPS, CentOS 7, LEMP

После того, как мы установили DLE на наш VPS, нам потребуется SSL сертификат. Он необходим для защиты ваших данных и для продвижения сайта в Google, так как Google лучше относится к сайтам, которые имеют SSL сертификат. 

Установка DLE на CentOS 7 LEMP (Nginx 1.14, MariaDB 1.12, PHP-FPM 7.1) в этом блоге -> ссылка

Примечание: половина статьи взята из хабра и адаптирована под DLE.
Установка Letsencrypt
Первым делом мы устанавливаем Git, Bc.
sudo yum -y install git bc
Далее мы копируем проект Letsencrypt на наш VPS из GitHub.
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
После успешного копирования мы вводим команду для генерации сертификата:
letsencrypt-auto certonly
Так же вводим (вместо example.com ваш домен)
cd /opt/letsencrypt ./letsencrypt-auto certonly -a webroot --webroot-path=/usr/share/nginx/html -d example.com -d www.example.c

После того, как letsencrypt инициализирует, нам необходимо будет вести дополнительные данные. Предложенные вопросы могут варьироваться в зависимости от того, как давно вы использовали letsencrypt раньше, но мы запускаем первый раз.

В командной строке введите адрес электронной почты, который будет использоваться для информативных сообщений, а также будет возможность восстановить ключи:
Соглашайтесь с условиями пользования Letsencrypt.
Если все прошло успешно, тогда в консоли вы должны увидеть примерно это:
Output:
IMPORTANT NOTES:
 - If you lose your account credentials, you can recover through
   e-mails sent to sammy@digitalocean.com
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/example.com/fullchain.pem. Your
   cert will expire on 2016-03-15. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - Your account credentials have been saved in your Let's Encrypt
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Let's
   Encrypt so making regular backups of this folder is ideal.
 - If like Let's Encrypt, 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/letsencrypt/live/example.com/ и дату истечения действия сертификата.

После получения сертификата, вы будете иметь следующие PEM-закодированных файлы:

cert.pem: сертификат для вашего домена
chain.pem: Let's Encrypt цепь сертификатов
fullchain.pem: cert.pem и chain.pem
privkey.pem: Сертификат с приватным ключом

В целях дальнейшего повышения уровня безопасности, мы сформируем ключ по алгоритму шифрования Диффи-Хеллмана. Чтобы создать 2048-битный ключ, используйте следующую команду:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Процесс может занять несколько минут, но когда ключ создастся, он будет помещен в каталог в /etc/ssl/certs/dhparam.pem.

Теперь перейдём к важному шагу, настройке конфига NGINX для работы SSL на DLE.


server {
    listen 80;
    server_name example.com;
    root /usr/share/nginx/html/;
    index index.php index.html index.htm;

    location / {
    return 301 https://example.com$request_uri;
    }

    location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|woff)$ {
    return 301 https://example.com$request_uri;
    }

    location ~ \.php$ {
    return 301 https://example.com$request_uri;
    }

    location = /favicon.ico {
    log_not_found off;
    access_log off;
    }

    location = /robots.txt {
    rewrite ^ /robots.txt break;
    allow all;
    log_not_found off;
    access_log off;
    }

    location ~ /\.ht {
    deny all;
    }
}

server {
     listen  80;
     server_name  www.example.com;
     rewrite ^ https://example.com$request_uri? permanent;
}

server {
    listen 443 ssl http2;
    server_name example.com;
    root /usr/share/nginx/html/;
    index index.php index.html index.htm;

    keepalive_timeout        60;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    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_dhparam /etc/ssl/certs/dhparam.pem;
    add_header Strict-Transport-Security max-age=15768000;
    
    location / {
    try_files $uri $uri/ /index.php?$args;
    }

    location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|woff)$ {
    access_log off;
    expires max;
    }

    location ~ \.php$ {
    try_files  $uri =404;
    fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
    #fastcgi_pass    127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param DOCUMENT_ROOT /usr/share/nginx/html/;
    fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
    fastcgi_param PATH_TRANSLATED /usr/share/nginx/html$fastcgi_script_name;
    include fastcgi_params;
    fastcgi_param QUERY_STRING $query_string;
    fastcgi_param REQUEST_METHOD $request_method;
    fastcgi_param CONTENT_TYPE $content_type;
    fastcgi_param CONTENT_LENGTH $content_length;
    fastcgi_param HTTPS on;
    fastcgi_intercept_errors on;
    fastcgi_ignore_client_abort off;
    fastcgi_connect_timeout 60;
    fastcgi_send_timeout 180;
    fastcgi_read_timeout 180;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 4 256k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    }

    location = /favicon.ico {
    log_not_found off;
    access_log off;
    }

    location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
    }

    location ~ /\.ht {
    deny all;
    }
    
    #DLE
    
    location ~* (uploads|uploads/fotos|uploads/files|templates)/.+\.php {
        deny all;
    }

    location ~* /templates/.+\.tpl {
        deny all;
    }

    location ~* ^/(engine/data|engine/cache|engine/cache/system|language).+\.(php|tmp) {
        deny all;
    }
    
    # Редиректы
    rewrite "^/page/([0-9]+)(/?)$" /index.php?cstart=$1 last;

    # Сам пост
    rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),([0-9]+),(.*).html(/?)+$" /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&cstart=$5&news_name=$6&seourl=$6 last;
    rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),(.*).html(/?)+$" /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5 last;
    rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/print:page,([0-9]+),(.*).html(/?)+$" /index.php?mod=print&subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5 last;
    rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*).html(/?)+$" /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_name=$4&seourl=$4 last;

    rewrite "^/([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$4&news_page=$2&cstart=$3&seourl=$5&seocat=$1 last;
    rewrite "^/([^.]+)/page,([0-9]+),([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$3&news_page=$2&seourl=$4&seocat=$1 last;
    rewrite "^/([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$" /index.php?mod=print&news_page=$2&newsid=$3&seourl=$4&seocat=$1 last;
    rewrite "^/([^.]+)/([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$2&seourl=$3&seocat=$1 last;

    rewrite "^/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$3&news_page=$1&cstart=$2&seourl=$4 last;
    rewrite "^/page,([0-9]+),([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$2&news_page=$1&seourl=$3 last;
    rewrite "^/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$" /index.php?mod=print&news_page=$1&newsid=$2&seourl=$3 last;
    rewrite "^/([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$1&seourl=$2 last;

    # За день
    rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})(/?)+$" /index.php?year=$1&month=$2&day=$3 last;
    rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/page/([0-9]+)(/?)+$" /index.php?year=$1&month=$2&day=$3&cstart=$4 last;

    # За весь месяц
    rewrite "^/([0-9]{4})/([0-9]{2})(/?)+$" /index.php?year=$1&month=$2 last;
    rewrite "^/([0-9]{4})/([0-9]{2})/page/([0-9]+)(/?)+$" /index.php?year=$1&month=$2&cstart=$3 last;

    # Вывод за весь год
    rewrite "^/([0-9]{4})(/?)+$" /index.php?year=$1 last;
    rewrite "^/([0-9]{4})/page/([0-9]+)(/?)+$" /index.php?year=$1&cstart=$2 last;

    # вывод отдельному тегу
    rewrite "^/tags/([^/]*)(/?)+$" /index.php?do=tags&tag=$1 last;
    rewrite "^/tags/([^/]*)/page/([0-9]+)(/?)+$" /index.php?do=tags&tag=$1&cstart=$2 last;

    # поиск по доп полям
    rewrite "^/xfsearch/(.*)/page/([0-9]+)(/?)+$" /index.php?do=xfsearch&xf=$1&cstart=$2 last;
    rewrite "^/xfsearch/(.*)(/?)+$" /index.php?do=xfsearch&xf=$1 last;

    # вывод для отдельного юзера
    rewrite "^/user/([^/]*)/rss.xml$" /index.php?mod=rss&subaction=allnews&user=$1 last;
    rewrite "^/user/([^/]*)(/?)+$" /index.php?subaction=userinfo&user=$1 last;
    rewrite "^/user/([^/]*)/page/([0-9]+)(/?)+$" /index.php?subaction=userinfo&user=$1&cstart=$2 last;
    rewrite "^/user/([^/]*)/news(/?)+$" /index.php?subaction=allnews&user=$1 last;
    rewrite "^/user/([^/]*)/news/page/([0-9]+)(/?)+$" /index.php?subaction=allnews&user=$1&cstart=$2 last;
    rewrite "^/user/([^/]*)/news/rss.xml(/?)+$" /index.php?mod=rss&subaction=allnews&user=$1 last;

    # вывод всех последних новостей
    rewrite "^/lastnews(/?)+$" /index.php?do=lastnews last;
    rewrite "^/lastnews/page/([0-9]+)(/?)+$" /index.php?do=lastnews&cstart=$1 last;

    # вывод в виде каталога
    rewrite "^/catalog/([^/]*)/rss.xml$" /index.php?mod=rss&catalog=$1 last;
    rewrite "^/catalog/([^/]*)(/?)+$" /index.php?catalog=$1 last;
    rewrite "^/catalog/([^/]*)/page/([0-9]+)(/?)+$" /index.php?catalog=$1&cstart=$2 last;

    # вывод непрочитанных статей
    rewrite "^/newposts(/?)+$" /index.php?subaction=newposts last;
    rewrite "^/newposts/page/([0-9]+)(/?)+$" /index.php?subaction=newposts&cstart=$1 last;

    # вывод избранных статей
    rewrite "^/favorites(/?)+$" /index.php?do=favorites last;
    rewrite "^/favorites/page/([0-9]+)(/?)+$" /index.php?do=favorites&cstart=$1 last;

    rewrite "^/rules.html$" /index.php?do=rules last;
    rewrite "^/statistics.html$" /index.php?do=stats last;
    rewrite "^/addnews.html$" /index.php?do=addnews last;
    rewrite "^/rss.xml$" /index.php?mod=rss last;
    rewrite "^/sitemap.xml$" /uploads/sitemap.xml last;

    if (!-d $request_filename) {
            rewrite "^/([^.]+)/page/([0-9]+)(/?)+$" /index.php?do=cat&category=$1&cstart=$2 last;
            rewrite "^/([^.]+)/?$" /index.php?do=cat&category=$1 last;
    }

    if (!-f $request_filename) {
            rewrite "^/([^.]+)/rss.xml$" /index.php?mod=rss&do=cat&category=$1 last;
            rewrite "^/page,([0-9]+),([^/]+).html$" /index.php?do=static&page=$2&news_page=$1 last;
            rewrite "^/print:([^/]+).html$" /index.php?mod=print&do=static&page=$1 last;
    }

    if (!-f $request_filename) {
            rewrite "^/([^/]+).html$" /index.php?do=static&page=$1 last;
        }        
}

server {
     listen  443 ssl http2;
     server_name  www.example.com;
     rewrite ^ https://example.com$request_uri? permanent;
}
Теперь необходимо перезапустить NGINX, но перед этим проверьте ваш конфиг на ошибки.
nginx -t
Если всё хорошо, значит вы сделали всё правильно. Помните, везде example.com нужно менять на свой домен!
Перезапускаем:
sudo systemctl reload nginx
Далее нам нужно настроить автообновление, для этого в консоль вводим:
/opt/letsencrypt/letsencrypt-auto renew
Так как недавно был получен сертификат, выйдет данное сообщение:
Checking for new version...
Requesting root privileges to run letsencrypt...
   /root/.local/share/letsencrypt/bin/letsencrypt renew
Processing /etc/letsencrypt/renewal/example.com.conf

The following certs are not due for renewal yet:
  /etc/letsencrypt/live/example.com/fullchain.pem (skipped)
No renewals were attempted.
Нам необходимо войти через FTP менеджер и отредактировать файл /etc/crontab
Добавляем в данный файл следующие строки:
30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log
35 2 * * 1 /usr/bin/systemctl reload nginx

Эта команда создаст cron, который каждый понедельник будет выполнять автоматическое продление letsencrypt сертификатов в 2:30 и перезагружать Nginx в 2:35. Вся информация об обновлении будет логироваться в /var/log/le-renew.log.

Необязательно:
Всякий раз, когда новые обновления доступны для клиента Let’s Encrypt, вы можете обновить локальную копию, запустив git pull из каталога /opt/letsencrypt:
cd /opt/letsencrypt
sudo git pull

Назад  Вперед


  • Admin
  • 25.09.2018
  • 30 324
  • 1
  • Источник
Похожие материалы
DLE 13.2 или другая CMS на VPS (LEMP)
DLE 13.2 или другая CMS на VPS (LEMP)
13-04-2019, 09:48, Блог
Установка DLE на CentOS 7 (LEMP)
Установка DLE на CentOS 7 (LEMP)
19-09-2018, 21:58, Блог
Magisk - как рутировать ваш Android смартфон?
Magisk - как рутировать ваш Android смартфон?
19-05-2019, 09:41, Статьи
Grand Theft Auto V для Android! [Неактуально]
Grand Theft Auto V для Android! [Неактуально]
15-08-2019, 20:09, Файлы

Соблюдай правила, не стесняйся спрашивать и комментировать. Вступай в дисскусию нашего королевства Модляндия.

  1. Rockstar Друзья сайта 5 октября 2018 16:34  -1 
    Спасибо получил!
    жалоба
Информация Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
  • Файлы
    • Kenshi
    • Project Zomboid
    • Factorio
    • The binding of isaac
    • The Witcher 3
    • Minecraft
    • TESO
    • People playground
    • Days Gone
    • M&B: Bannerlord
      • Войска, Юниты
    • Rimworld
    • Valheim
    • Hearts of Iron 4
    • Total War: Warhammer II
    • AtomRPG
    • Satisfactory
    • Crusader Kings III
    • Battle Brothers
    • Terraria
    • 7 Days To Die
    • Cyberpunk 2077
    • The Sims 3
    • The Sims 4
    • S.T.A.L.K.E.R
      • S.T.A.L.K.E.R Shadow of Chernobyl
      • S.T.A.L.K.E.R. Clear Sky
      • S.T.A.L.K.E.R. Call of Pripyat
      • S.T.A.L.K.E.R. Call of Chernobyl
    • S.T.A.L.K.E.R. 2
    • Fallout 4
    • TES 5: Skyrim
    • Garry's Mod
    • SnowRunner
    • Другие игры
    • Программы
  • Статьи
  • Игровые новости
  • Аксессуары и железо
  • Aliexpress
  • Лайфхаки
  • Халява
  • Блог
Лента комментариев
more building(Bridge only) / Больше зданий (только мосты)
Мод офигенный, без этих мостов вообще не играю. Дают массу возможностей
Dread Limbs / Новые протезы (RU)
Вроде красиво, но не логично. Присоединение протеза это целое искусство.
Medical Beds / Медицинские кровати (RU)
Отличный мод. Все пашет, изучается, хп восстанавливается как заявлено. 
Equipment - Hi-Kers Backpack / Снаряжение - Hi-Kers рюкзаки (RU)
Пробовал мод. Рюкзаки красивые, особенно порадовал поясной со спины висит
UI D cursor
Мод отображается в списке, но никаких изменений нет. Стандартный курсор
Все комментарии
За чем вы сюда пришли?
Полезно
Добавить ссылку
ModeLand.ru © 2018-2024. Страна модификаций.

Мы не несем ответственности за установленные вами модификации. Если пошло что-то не так, напишите в комментариях к неработающему материалу. Мы попытаемся решить проблему.

Политика конфиденциальности Обратная связь О проекте Стать автором Опубликовать материал Разместить рекламу
Авторство. Все права соблюдены.

Не исключаем возможности, что авторы и/или владельцы авторских прав на некоторые из материалов будут возражать против их нахождения в открытом доступе. Если владелец авторских прав не желает, чтобы его произведения были доступны через наш сайт, он может об этом написать на доступный e-mail в контактных данных.

Быстрый вход

Используйте социальные сети для быстрого входа

Создать аккаунт / Регистрация
Авторизация

Восстановить пароль