Связаться по:
vkarabedyants Telegram Viber
+7 (499) 350-10-69

Блог о системном администрировании серверов и сайтов

Установка, настройка программного обеспечения Linux, Windows операционных систем

Как в nginx настроить бесплатный LetsEncrypt SSL сертификат на Debian или Ubuntu Linux

Как мне защитить мой веб — сервер Nginx шифрованием бесплатный SSL — сертификатом на моем Ubuntu Linux 14.04 LTS или Debian Linux  8.x ?

Вы можете использовать LetsEncrypt сертификат для авторизации на вашем сайте. Так же получить бесплатно TLS / SSL сертификат включая wildcard сертификат для создания зашифрованного сеанса HTTPS для посетителей сайта. В этой статье, я объясню , как использовать Шифрование и  установить бесплатный сертификат SSL для веб — сервера Nginx вместе с тем, как правильно развернуть Diffie-Hellman на вашем Nginx сервер, чтобы получить оценку А+.

le.sh ( «li») является клиентом сценарий оболочки для LetsEncrypt бесплатного сертификата. Он очень прост в использовании и прекрасно работает как с Apache и Nginx. Он работает в следующем режиме:

  • режим Webroot
  • Автономный режим
  • режим Apache
  • режим Dns

Обратите внимание, что сертификаты LetsEncrypt действительны только в течение 90 дней. Автоматическое обновление функциональность немного сложнее, и нужно настроить через cron. Официальный установщик Nginx еще не функционален.

letsencrypt

  1. По умолчанию конфигурационный файл Nginx : /etc/nginx/sites-available/default
  2. Nginx каталог для сертификатов SSL: /etc/nginx/ssl/theos.in/
  3. Nginx DocumentRoot (корень) Путь:  /etc/nginx/ssl/theos.in/
  4. Nginx TLS / SSL Порт: 443
  5. Наш домен образец: theos.in
  6. Выделенный внешний IP : 74.86.26.69

Установка Le

Во- первых, установить git и bc с помощью команды apt-get

sudo apt-get install git bc

Далее клонировать клиента le, введите следующую команду:

cd /tmp/
git clone https://github.com/Neilpang/le.git

Чтобы установить le.sh в вашей системе, введите следующую команду:

cd le
sudo ./le.sh install

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

source ~/.bashrc

Проверьте (сначала стать суперпользователя):

$ sudo -s 
# le

Все следующие команды выполняются в качестве root пользователя т.е. введите следующую команду первой:

$ sudo -s

Создайте каталог /.well-known/acme-challenge/

Введите следующую команду:

# mkdir -p /var/www/html/.well-known/acme-challenge/

###---[ NOTE: Adjust permission as per your setup ]---###
# chown -R www-data:www-data /var/www/html/.well-known/acme-challenge/
# chmod -R 0444 /var/www/html/.well-known/acme-challenge/

Создать каталог для хранения SSL сертификатов

# mkdir -p /etc/nginx/ssl/theos.in/

Сформировать файл dhparam.pem
Вы должны использовать Diffie-Hellman (DH) группу, независимо от программного обеспечения сервера. Самый простой способ создания новую группу, является использование OpenSSL. Введите следующую команду, чтобы создать файл dhparam.pem:

# cd /etc/nginx/ssl/theos.in/

Я предлагаю вам создать 4096-битовую группу:

# openssl dhparam -out dhparams.pem 4096

Выпуск сертификата для домена theos.in

Синтаксис выглядит следующим образом

le issue /DocumentRootPath/ example.com
le issue /DocumentRootPath/ example.com www.foo.com,bar.com
le issue /DocumentRootPath/ example.com 2048

Для того, чтобы выдать сертификат на theos.in и www.theos.in, введите следующую команду:

# le issue /var/www/html theos.in www.theos.in

Например, если вы ничего не напишите для “key-length”, он будет использовать длину по умолчанию 2048. В этом примере набор «key-length» 4096

# le issue /var/www/html theos.in www.theos.in 4096

Результат:

issue-a-cert

Настройка TLS / SSL на веб-сервере Nginx

Редактирование nginx.conf или /etc/nginx/sites-available/default выглядит следующим образом:

# vi /etc/nginx/sites-available/default

Добавьте следующие директивы конфигурации

## START: SSL/HTTPS theos.in ###
server {
    #------- Start SSL config ----##
    listen 74.86.26.69:443;
    server_name theos.in;
    ssl on;
    ssl_certificate /etc/nginx/ssl/theos.in/theos.in.cer;
    ssl_certificate_key /etc/nginx/ssl/theos.in/theos.in.key;
    ssl_session_timeout 30m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
    ssl_session_cache shared:SSL:10m;
    ssl_dhparam /etc/nginx/ssl/theos.in/dhparams.pem;
    ssl_prefer_server_ciphers on;

    ## Improves TTFB by using a smaller SSL buffer than the nginx default
    ssl_buffer_size 8k;

    ## Enables OCSP stapling
    ssl_stapling on;
    resolver 8.8.8.8;
    ssl_stapling_verify on;

    ## Send header to tell the browser to prefer https to http traffic
    add_header Strict-Transport-Security max-age=31536000;

    ## SSL logs ##
    access_log /var/log/nginx/theos.in/ssl_access.log;
    error_log /var/log/nginx/theos.in/ssl_error.log;
    #-------- END SSL config -------##

    # Add rest of your config below like document path and more ##
}
## END SSL theos.in ######

Сохраните и закройте файл.

Установите выданный сертификат на веб-сервер Nginx

Введите следующую команду:

# le installcert theos.in /etc/nginx/ssl/theos.in/theos.in.cer /etc/nginx/ssl/theos.in/theos.in.key /etc/nginx/ssl/theos.in/ca.cer 'service nginx reload'

Чтобы избежать проблем, введите следующую команду:

# cd /etc/nginx/ssl/theos.in/ 
# cat theos.in.cer ca.cer > foo 
# mv foo theos.in.cer 
# service nginx reload

Откройте порт 443

Введите следующую команду UFW:

# ufw allow proto tcp from any to 74.86.26.69 port 443

Проверяем

Введите следующуй URL:

https://theos.in

Или посетите SSL лаборатории , чтобы проверить ваши TLS / SSL конфигурации:

ssl-labs-scroe

Как продлить сертификат?

Введите следующую команду:

# le renew theos.in

Так же для продления сертификата можно использовать cron

0 0 * * * LE_WORKING_DIR="/root/.le" "/root/.le"/le.sh cron > /dev/null

Если вы хотите использовать SSL на своем сайте или проекте и не знаете как, обращайтесь [email protected]

1 Response

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

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.