нас бесплатный сертификат от https://letsencrypt.org/
Создание SSL-сертификата для Nginx http://slc.tl/a24t
Создание SSL-сертификата для Apache http://slc.tl/4jb6d
sssss
Создание SSL-сертификата для Nginx http://slc.tl/a24t
Создание SSL-сертификата для Apache http://slc.tl/4jb6d
sssss
Создание SSL-сертификата для Apache с Let's Encrypt на сервере с Ubuntu 16.04
Введение
Совсем недавно компания Google заявила, что изменяет свою политику ранжирования сайтов в поисковой выдаче. Представители компании заявили, что будут поднимать сайты, работающие на протоколе HTTPS, вверх выдачи. И как результат— цепная реакция: владельцы крупных проектов тут же позаботились об установке SSL-сертификата, дабы не терять свои позиции в поисковой выдаче от Google. SSL-сертификат позволяет шифровать трафик, передаваемый между клиентом и сервером, обеспечивая защиту персональных данных. И самое главное - сертификат совершенно бесплатен! В этом руководстве мы ознакомимся с процессом установки SSL/TLS сертификата на веб-сервер Apache при помощи Let's Encrypt.
Технические требования
- Сервер с Ubuntu 16.04
- Установленный веб-сервер Apache.
- Доменное имя, A-запись которого указывает на ваш сервер
Шаг 1. Установка и настройка клиента Let's Encrypt
Перед тем, как начинать производить какие-либо операции на вашем сервере, обязательно обновите индекс пакетов в системе:
apt-get update
После этого можно приступать к загрузке клиента Let's Encrypt:
apt-get install python-letsencrypt-apache
Многие любят Let's Encrypt не только за возможность установит сертификат бесплатно, но и за возможность сделать это в "один клик"(в данном случае, введением одной команды). Запросите установку SSL-сертификата командой, указав нужный вам домен(и в случае необходимости — поддомены):
letsencrypt --apache -d vscale-letsencrypt.cf -d www.vscale-letsencrypt.cf
Заметка: для этого руководства мною был заказан бесплатный домен сроком на один месяц. На вашем сервере вместо vscale-letsencrypt.cf указывайте свой домен.
Во время установки программа попросит вас ввести адрес вашей электронной почты. Не игнорируйте этот пункт, поскольку почта может быть использована для восстановления утерянного ключа домена.
Следующим шагом подтвердите согласие с пользовательским соглашением. Далее программа попросит вас выбрать тип SSL-сертификата. Предоставляется два типа на выбор:
- Easy — https будет доступен опционально. Сайт по прежнему будет работать на HTTP, но сможет принимать HTTPS там, где это укажет администратор.
- Secure — все запросы будут принудительно отправляться к https.
Выбирайте тип сертификата исходя их ваших предпочтений. В данном руководстве будет выбран тип Secure.
Важно: если вы выбрали тип Secure и у вас предварительно не настроен редирект на https://, то вам нужно открыть конфигурационный файл вашего сайта:
nano /etc/apache2/sites-available/000-default.conf
Добавьте в него следующие строки для редиректа:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ServerName www.vscale-letsencrypt.cf Redirect permanent / https://vscale-letsencrypt.cf/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
На этом настройку Let's Encrypt можно считать завершённой. Проверьте, появился ли HTTPS на вашем сайте.
Шаг 2. Настройка автопродления
Согласно политике Let's Encrypt, сертификат действителен 3 месяца(90 дней), однако, его можно продлить вручную при помощи команды:
letsencrypt renew
Но гораздо удобнее продлевать сертификат автоматически. Поможет нам в этом Cron — демон-планировщик задач в UNIX-системах. Активируйте его при помощи команды:
crontab -e
Из списка текстовых редакторов выберите nano, в самом конце файла вставьте строку:
0 0 1 * * /usr/bin/letsencrypt renew >> /var/log/le-renew.log
Эта строка значит, что команда letsencrypt renew будет запускаться раз в месяц и сохранять результат работы в лог-файл. В данном случае, команда была введена 25.11.2016 в 16:04, а значит, что планировщик задач выполнит задачу ровно через месяц - 25.12.2016 в 16:04. Сохраните файл сочетанием клавиш Ctrl+O, подтвердите сохранение кнопкой Enter. Закрыть текстовый редактор можно кнопкой Ctrl+X.
Заключение
Вы успешно настроили SSL/TLS-сертификат на вашем сервере. Let's Encrypt — это действительно удобный инструмент для начинающего разработчика, позволяющий быстро, удобно и, фактически, в один клик установить SSL/TLS-сертификат. Также, установив сертификат вы подкрепили доверие ваших пользователей показав им, что вы действительно стремитесь защищать их данные.
Создание SSL-сертификатов для Nginx с Let’s Encrypt под Ubuntu 16.04
Некоммерческий удостоверяющий центр Let's Encrypt, развивающийся под эгидой Linux Foundation - хороший способ получить бесплатный (не самоподписанный!) SSL/TLS-сертификат сроком на три месяца, с возможностью автопродления.
В данном руководстве все действия будут выполняться с помощью официального клиента letsencrypt. Он позволяет создать достоверный сертификат, пригодный для использования в различных приложениях, конкретно же речь пойдет об Nginx.
Требования:
- Ubuntu Server 16.04;
- пользователь с sudo-привилегиями;
- собственно домен;
- DNS-запись A вашего домена должна указывать на IPv4-адрес вашего же сервера в Vscale (необходимо для подтверждения владения; доменом). Это также в силе для поддоменов (вроде www.example.site).
Шаг 1. Установка необходимого ПО
Обновим локальные индексы менеджера пакетов и установим клиент letsencrypt:
$ sudo apt-get update $ sudo apt-get install letsencrypt -y
Мы пойдём по пути использования Web-root плагина letsencrypt, суть работы которого заключается в том, что он помещает специальный файл в каталог /.well-known (путь указан относительно корня веб-директории), необходимый для валидации вашего домена серверной частью ПО Let's Encrypt.
Если по какой-либо причине ещё не был установлен веб-сервер Nginx - сделайте это с помощью следующих команд:
$ sudo add-apt-repository ppa:nginx/development $ sudo apt-get update $ sudo apt-get install nginx -y
Шаг 2. Подготовка к выпуску сертификата
Откройте конфигурационный файл Nginx:
$ sudo nano /etc/nginx/sites-available/default
внутри серверного блока (server { ...) поместите блок location:
location ~ /.well-known {
allow all;
}
выйдите из редактора, сохранив изменения, по нажатию Ctrl+X, y, Enter.
Протестируйте конфигурационный файл Nginx на корректность:
$ sudo nginx -t
Перезапустите Nginx:
$ sudo service nginx reload
Шаг 3. Выпуск сертификата
Запустите клиент letsencrypt с повышением и нужными Вам параметрами (/var/www/html - корень вашей веб-директории (по-умолчанию), example.site - домен):
$ sudo letsencrypt certonly -a webroot --webroot-path=/var/www/html -d example.site -d www.example.site
После этого вам будет предложено ввести e-mail (для получения уведомлений об истечении сертификата, если вы вдруг не захотите настроить автопродление) и согласиться с лицензионным соглашением.
Итак, теперь у вас есть 4 PEM-файла, относящихся к сертификату - можно вывести их имена командой (example.site - ваш домен):
$ sudo ls -l /etc/letsencrypt/live/example.site
Шаг 4. Генерация параметров Диффи-Хеллмана
Для улучшения безопасности - cгенерируем параметры Диффи-Хеллмана и запишем в файл (процесс займёт некоторое время):
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Шаг 5. Изменение конфигурации Nginx:
Опять отредактируем конфигурационный файл Nginx:
$ sudo nano /etc/nginx/sites-available/default
Привожу проверенный вариант:
server {
listen 80;
listen [::]:80;
server_name example.site;
# редирект на HTTPS
return 301 https://$server_name$request_uri;
server_tokens off;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.site;
ssl_certificate /etc/letsencrypt/live/example.site/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.site/privkey.pem;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
# конфигурация Modern
ssl_protocols TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_prefer_server_ciphers on;
# HSTS - форсированно устанавливать соединение по HTTPS
add_header Strict-Transport-Security "max-age=15768000";
# Разрешение прикрепления OCSP-ответов сервером
ssl_stapling on;
# Разрешение проверки сервером ответов OCSP
ssl_stapling_verify on;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
# Запрещение выдачи версии nginx в HTTP-заголовках
server_tokens off;
location / {
try_files $uri $uri/ =404;
}
# для валидации Let's Encrypt
location ~ /.well-known {
allow all;
}
}
Для более подробного разъяснения SSL-директив в конфигурации Nginx: документация (на русском) ngx_http_ssl_module.
Преимущества такой конфигурации:
- поддержка бинарного протокола HTTP2
- HTTPS-only
- заточена под максимальную безопасность и современные версии браузеров
- A+-рейтинг по версии SSL Labs
Шаг 6 (необязательный). Настройка автопродления сертификата
Вручную продлить сертификат на 3 месяца можно так:
$ sudo letsencrypt renew
Естественно, следует перезапустить Nginx:
$ sudo service nginx reload
Для автоматизации процесса добавим задание в планировщик сron.
Откройте список заданий cron:
$ crontab -e
Добавьте следующие строки:
30 5 * * 1
sudo letsencrypt renew35 5 * * 1
sudo service nginx reload
Каждый понедельник, в 05:30 будет производиться запуск клиента Let's Encrypt, и в случае необходимости - выполняться продление сертификата.
Заключение
Let's Encrypt выпускает совершенно стандартные сертификаты, без возможности какой-либо настройки. Вся суть состоит в конфигурации веб-сервера Nginx, а именно в нахождении баланса совместимости и безопасности.
Если Вам нужна поддержка более старых устройств/браузеров, рекомендуется воспользоваться Mozilla SSL Configuration Generator. Выберите версии веб-сервера Nginx и openssl, а также, собственно, вариант конфигурации - для старых версий браузеров, среднюю или современную.