Как мне защитить мой веб — сервер 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 еще не функционален.nnn
- n
- По умолчанию конфигурационный файл Nginx : /etc/nginx/sites-available/default
- Nginx каталог для сертификатов SSL: /etc/nginx/ssl/theos.in/
- Nginx DocumentRoot (корень) Путь: /etc/nginx/ssl/theos.in/
- Nginx TLS / SSL Порт: 443
- Наш домен образец: theos.in
- Выделенный внешний 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
Настройка TLS / SSL на веб-сервере Nginx
Редактирование nginx.conf или /etc/nginx/sites-available/default выглядит следующим образом:n
# vi /etc/nginx/sites-available/default
Добавьте следующие директивы конфигурации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.in
nnИли посетите SSL лаборатории , чтобы проверить ваши TLS / SSL конфигурации:n
Как продлить сертификат?
Введите следующую команду:n
# le renew theos.in
Так же для продления сертификата можно использовать cronn
0 0 * * * LE_WORKING_DIR="/root/.le" "/root/.le"/le.sh cron > /dev/null
Если вы хотите использовать SSL на своем сайте или проекте и не знаете как, обращайтесь [email protected]