Rate this post

Как мне защитить мой веб — сервер Nginx шифрованием бесплатный SSL — сертификатом на моем Ubuntu Linux 14.04 LTS или Debian Linux  8.x ?nnВы можете использовать LetsEncrypt сертификат для авторизации на вашем сайте. Так же получить бесплатно TLS / SSL сертификат включая wildcard сертификат для создания зашифрованного сеанса HTTPS для посетителей сайта. В этой статье, я объясню , как использовать Шифрование и  установить бесплатный сертификат SSL для веб — сервера Nginx вместе с тем, как правильно развернуть Diffie-Hellman на вашем Nginx сервер, чтобы получить оценку А+.nnle.sh ( «li») является клиентом сценарий оболочки для LetsEncrypt бесплатного сертификата. Он очень прост в использовании и прекрасно работает как с Apache и Nginx. Он работает в следующем режиме:n

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

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

    n

  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

n

Установка Le

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

sudo apt-get install git bc

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

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

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

cd lensudo ./le.sh install

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

source ~/.bashrc

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

$ sudo -s n# le

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

$ sudo -s

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

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

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

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

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

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

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

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

# openssl dhparam -out dhparams.pem 4096

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

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

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

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

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

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

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

Результат:issue-a-certn

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

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

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

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

n

n

n

n

n

n

n

n

## START: SSL/HTTPS theos.in ###nserver {n    #------- Start SSL config ----##n    listen 74.86.26.69:443;n    server_name theos.in;n    ssl on;n    ssl_certificate /etc/nginx/ssl/theos.in/theos.in.cer;n    ssl_certificate_key /etc/nginx/ssl/theos.in/theos.in.key;n    ssl_session_timeout 30m;n    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;n    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;n    ssl_session_cache shared:SSL:10m;n    ssl_dhparam /etc/nginx/ssl/theos.in/dhparams.pem;n    ssl_prefer_server_ciphers on;nn    ## Improves TTFB by using a smaller SSL buffer than the nginx defaultn    ssl_buffer_size 8k;nn    ## Enables OCSP staplingn    ssl_stapling on;n    resolver 8.8.8.8;n    ssl_stapling_verify on;nn    ## Send header to tell the browser to prefer https to http trafficn    add_header Strict-Transport-Security max-age=31536000;nn    ## SSL logs ##n    access_log /var/log/nginx/theos.in/ssl_access.log;n    error_log /var/log/nginx/theos.in/ssl_error.log;n    #-------- END SSL config -------##nn    # Add rest of your config below like document path and more ##n}n## END SSL theos.in ######

n

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

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

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

# 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'

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

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

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

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

# ufw allow proto tcp from any to 74.86.26.69 port 443

ПроверяемnnВведите следующуй URL:nnhttps://theos.innnИли посетите SSL лаборатории , чтобы проверить ваши TLS / SSL конфигурации:ssl-labs-scroen

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

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

# le renew theos.in

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

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

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