- Что такое ssl-сертификат
- Что такое ssl-сертификат и для чего он нужен
- Лучше выглядит в браузере
- CloudFlare
- Положительно сказывается (или будет) на позициях в поисковых системах
- Error: letsencrypt challenge request 429
- Безопасность данных
- Выбираем главное зеркало
- Выпуск и настройка сертификата для панели управления vestacp
- Где купить ssl-сертификат
- Генерация ключа по алгоритму диффи-хеллмана
- Доверие к сайту
- Другие варианты:
- Использование плагина webroot
- Как заказать выпуск бесплатного ssl-сертификата
- Как получить ssl-сертификат
- Какие виды ssl-сертификатов есть и кто их выдаёт?
- Каким сайтам нужен ssl?
- Когда нужно покупать несколько сертификатов
- Лучшие эмитенты бесплатных и недорогих сертификатов ssl
- Настраиваем конфигурацию nginx для ssl
- Плюсы и минусы бесплатного ssl-сертификата от let’s encrypt
- Распаковываем и устанавливаем ssl-сертификат на сайт
- Сколько сертификатов покупать
- Сколько стоит ssl?
- Создаем сниппет конфигурации для ssl-ключа и сертификата
- Создаем сниппет конфигурации с устойчивыми настройками шифрования
- Файлы сертификата
- Шаг 3. настраиваем tls/ssl на веб-сервере
- Шаг 4. настраиваем файрвол
- Шаг 5. подключаем изменения в nginx
- Шаг 6. настраиваем автоматическое обновление
- Шаг 0. подготовка
Что такое ssl-сертификат
S SL (Secure Sockets Layer) – это протокол шифрования, используемый для более безопасного обмена данными.
Что такое ssl-сертификат и для чего он нужен
При посещении любого веб-сайта пользователи больше всего беспокоятся о безопасности и конфиденциальности. Совершенно неудобно потерять пароль от банковской карты или другую конфиденциальную информацию после безобидного серфинга в Интернете. От того, насколько безопасен ваш сайт, зависит его авторитет как у пользователей, так и у поисковых систем.
Это своего рода сертификат, или “credential”, который подтверждает безопасность пользователя на вашем сайте. Хакер может перехватить данные, которые вы вводите на сайте, если у вас нет такого сертификата.
Вот пример: Вы покупаете книгу в интернет-магазине и вводите данные своей кредитной карты для оплаты. Эти данные передаются на сервер веб-сайта и могут быть перехвачены в процессе передачи. Даже если она попадет в чужие руки, SSL шифрует данные, так что злоумышленник получит бесполезные случайные символы вместо ценной информации.
Зайдя на сайт без SSL, пользователь увидит эту ужасную картину (от Google):
Аналогичным образом, с Яндекс :
Несмотря на грусть адресной строки, дела обстоят не менее плохо.
Как известно, увидев такое предупреждение, пользователь немедленно покинет сайт. Короче говоря, SSL необходим для всех современных веб-сайтов, даже для персональных блогов.
Поэтому все, что требуется, – это получить сертификат и установить его на сайте. Вы можете получить SSL бесплатно или за плату.
Лучше выглядит в браузере
В последнее время растет тенденция, когда браузеры не любят сайты с SSL-шифрованием. Кроме того, они будут пытаться помешать вашим посетителям регистрироваться на вашем сайте и совершать покупки.
Используя современный браузер, вот как выглядит сайт без SSL:
Это не так уж плохо, но становится весело, когда вы начинаете вводить свой пароль или номер кредитной карты. Это происходит следующим образом:
Может ли это отпугнуть некоторых ваших посетителей? Конечно, отпугнет. Кроме того, Firefox, когда ваш посетитель введет свои данные, отобразит это окно:
С SSL-сертификатом все выглядит гораздо лучше:
CloudFlare
Вот бесплатная CDN, которая поставляется с кучей бесплатных услуг, включая бесплатные SSL-сертификаты.
На этой странице перечислены минимальные требования для запуска сертификата (Windows Vista, Firefox 2, Android 4.0 и т. д.).
Положительно сказывается (или будет) на позициях в поисковых системах
Google начал ранжировать сайты с SSL-шифрованием выше в 2021 году, но только для ограниченного числа запросов. Теперь это затрагивает все больше и больше.
Я не смог найти информацию об этом в Яндексе, но вполне вероятно, что они учитывают это как один из второстепенных параметров.
Error: letsencrypt challenge request 429
- Попробуйте удалить домен из панели VestaCP и добавить его снова, затем попробуйте снова выпустить сертификат.
- Повторите выдачу сертификата через 1 час.
Безопасность данных
Очевидно, вам следует начать с этого пункта, поскольку это основная цель использования SSL-сертификатов. Если вы работаете с личными данными пользователей, просто зашифруйте их при отправке на сервер. Простое использование сертификата не является панацеей – злоумышленники смогут перехватить данные до того, как они попадут на сервер с зараженного компьютера или устройства посетителя. Однако использование протокола шифрования – это важный шаг на пути к тому, чтобы сделать сайт менее уязвимым для атак.
Выбираем главное зеркало
В используемой вами CMS откройте настройки сайта. Например, настройки сайта WordPress выглядят следующим образом:
Выпуск и настройка сертификата для панели управления vestacp
VestaCP включает поддержку Let’s Encrypt по умолчанию.
VestaCP предлагает дополнительные опции для выпуска и установки сертификатов при добавлении домена в WEB-панель:
После добавления можно отредактировать настройки домена в разделе WEB, выбрав параметры поддержки SSL:
Сертификат выпускается и автоматически устанавливается всего за пять минут. После этого данные SSL-сертификата будут доступны в настройках домена.
Также создаются задания cron для автоматического обновления сертификатов с истекшим сроком действия. В панели VestaCP вы можете найти эту информацию в разделе CRON:
Где купить ssl-сертификат
К поставщикам платных SSL-сертификатов относятся Comodo, IdenTrust, Symantec Group, GeoTrust.
Выберите тип сертификата перед покупкой; они доступны в нескольких цветах:
Генерация ключа по алгоритму диффи-хеллмана
Использование алгоритма Диффи-Хеллмана может помочь вам повысить уровень безопасности. Вот команды для генерации 2048-битного ключа:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048Процесс может занимать несколько минут.
Доверие к сайту
Сертификаты S SL используются всеми крупными проектами, поэтому пользователи привыкают к ним. У посетителей сайта создается впечатление, что они и их данные в безопасности, когда они видят надпись “Защищено” и замок.
Другие варианты:
- Бесплатные сертификаты также можно получить в компании StartCom. Я пользовался ими до конца 2021 года, когда Mozilla, Apple и Google решили перестать полагаться на эти сертификаты в новых версиях своих браузеров. И до сих пор StartCom не устранил эту проблему.
Использование плагина webroot
Webroot создает специальный файл в каталоге /.well-known. Let’s Encrypt может открыть его для проверки через корневой каталог веб-сервера (корень документа). В зависимости от ваших настроек может потребоваться явное разрешение папки /.well-known.
Если вы еще не установили Nginx, сделайте это, следуя руководству по установке Nginx в Ubuntu 16.04.
Измените конфигурацию Nginx, чтобы убедиться, что Let’s Encrypt может получить доступ к папке. Файл конфигурации по умолчанию можно найти по адресу /etc/nginx/sites-available/default. Мы отредактируем текст в Nano:
sudo nano /etc/nginx/sites-available/defaultДобавьте этот блок расположения внутри блока сервера:
# Добавить в SSL-блок server
location ~ /.well-known {
allow all;
}Как часть Webroot, вы также должны знать, где находится корневой каталог веб-сервера (корень документа). В каталоге /var/www/html будет храниться ваш стандартный файл конфигурации.
Сохраните и закройте файл.
Убедитесь, что ваша конфигурация не содержит синтаксиса:
sudo nginx -tNginx будет перезапущен, если нет ошибок:
sudo systemctl restart nginxКак заказать выпуск бесплатного ssl-сертификата
Вот краткий пример того, как настроить бесплатный SSL на веб-сервере Linux или Windows:
Для того чтобы доказать принадлежность домена и успешно сгенерировать сертификат, необходимо иметь доступ к записям DNS и иметь навыки работы с командной строкой.
Как получить ssl-сертификат
Чтобы перейти на защищенное соединение, необходимо приобрести SSL-сертификат. Обратитесь к своему хостеру: большинство из них теперь предлагают сертификаты.
Помимо бесплатных SSL-сертификатов, вы также можете приобрести профессиональный SSL-сертификат.
Приобретение SSL для всех страниц сайта, включая второстепенные, а также главную страницу, является необходимым. В результате пользователь, просматривающий сайт, будет постоянно получать уведомления от браузера о том, что он открыл незащищенную страницу.
Какие виды ssl-сертификатов есть и кто их выдаёт?
Существуют специальные центры сертификации, также называемые центрами сертификации (CA). Возможно, вы сталкивались со следующими названиями CA: Symantec, Comodo, GlobalSign, Thawte, GeoTrust, DigiCert. Они подтверждают подлинность ключей шифрования с помощью сертификатов цифровой подписи.
В качестве альтернативы существуют проекты, такие как CloudFlare или LetsEncrypt, где вы можете получить сертификат бесплатно. Сертификат действителен в течение 3 месяцев, после чего его необходимо продлить. Однако есть ряд нюансов, которые необходимо учитывать при их установке и дальнейшей работе.
Например, при использовании Cloudflare обратите внимание, что он выдает сертификаты не более чем 50 сайтам одновременно. Таким образом, вы будете защищать не только свой домен, но и несколько других доменов, что также влечет за собой риски безопасности. Cloudflare также не имеет печати доверия. Что касается недостатков LetsEncrypt, то к ним можно отнести то, что он поддерживает не все браузеры и не дает гарантии безопасности данных.
Он дает посетителям понять, что ваш сайт безопасен и что соединения с ним и все передаваемые данные защищены знаком доверия.
Поэтому существует несколько типов SSL-сертификатов, которые классифицируются по происхождению подписи и типу проверки данных.
- Самоподпись. Сертификат подписывается самим сервером. Он может быть сгенерирован любым пользователем. В принципе, он бесполезен, поскольку доверять ему будет только тот компьютер, на котором был сгенерирован сертификат. Большинство браузеров при доступе к странице с таким сертификатом выдают предупреждение о том, что соединение не является безопасным.
- Подписано утвержденным органом по сертификации (действительно). Я говорю о наиболее авторитетных органах сертификации. Сертификат корректно отображается во всех браузерах. Данные сертификата проверяются и утверждаются ЦС.
В отличие от самоподписанного сертификата, сертификат, выданный центром сертификации, распознается браузером как доверенный, и ваши посетители не будут уведомлены о том, что ресурс небезопасен. Ваш хостинг-провайдер или центр сертификации могут предоставить вам SSL-сертификаты.
Сертификаты, подписанные центрами доверия, также классифицируются по типу проверки данных:
- DV (Domain Validation) – это сертификат базового уровня, который только гарантирует шифрование данных, но не доказывает существование организации. Эти бюджетные сертификаты подходят как для физических, так и для юридических лиц.
- OV (Organisation Validation) – обеспечивает не только шифрование данных, но и подтверждает существование организации. Эти сертификаты доступны только для юридических лиц.
- EV (Extended Validation) – это эффективное решение с наивысшим классом безопасности, которое широко используется в онлайн-торговле. Для этого требуется расширенная процедура проверки, доказательство легитимности организации и подтверждение владения доменом.
Сертификаты всех вышеперечисленных типов используются для шифрования трафика между веб-сайтом и браузером. У них также есть дополнительные опции:
- WildCard – защищает соединение с доменом и всеми его поддоменами.
- SAN – защита доменов в соответствии со списком, указанным при получении SSL-сертификата.
Каким сайтам нужен ssl?
Сертификаты S SL должны быть прикреплены к веб-сайтам, которые имеют дело с финансами и информацией о клиентах. В этот список входят интернет-магазины, банки, платежные системы, социальные сети, почтовые сервисы и другие проекты.
Для того чтобы занять более высокое место в поисковых системах, рекомендуется внедрить SSL-сертификат в начале проекта. Вы можете быстро продвигаться без сертификата, но поисковые системы могут обнаружить его только через несколько месяцев. Более того, сегодня SSL можно поставить бесплатно.
Когда нужно покупать несколько сертификатов
Для разных регионов / стран / городов может существовать несколько версий сайта. Практическое применение этого заключается в следующем:
В случае если на вашем сайте существуют вышеуказанные подстраницы, вы должны использовать WildCard, который представляет собой сертификат с открытым ключом, подходящий для использования с несколькими поддоменами, обычно с поддоменами третьего уровня.
Несколько доменов могут быть подписаны одним сертификатом (например, поддерживается LE, также известный как Let’s Encrypt).
Несколько сертификатов необходимо приобрести, если компания имеет несколько обновленных версий сайта. Для последнего случая лучше выбрать SAN-сертификаты или SSL-сертификаты для нескольких доменов.
S SL-сертификаты подтверждают домены из списка, указанного при получении сертификата.
S SL-сертификат с поддержкой нескольких доменов позволяет добавлять домены по мере необходимости. Компании, которые дорожат своей репутацией, используют многодоменные SSL-сертификаты, поскольку они защищают несколько доменных адресов, а также проверяют доменные адреса.
Лучшие эмитенты бесплатных и недорогих сертификатов ssl
Следующие излучатели подойдут, если вам нужен более низкий уровень шифрования:
С помощью стандартного SSL вы можете защитить свой контент и данные о лидах в HubSpot CMS. В результате повышается доверие посетителей и улучшается видимость в поисковых системах.
Настраиваем конфигурацию nginx для ssl
Теперь мы можем обновить конфигурацию Nginx и подключить SSL после подготовки фрагментов.
В данном руководстве мы предполагаем, что вы используете стандартный файл блока сервера, расположенный в папке /etc/nginx/sites-available. Если вы используете другой файл блока сервера, замените его имя в следующих командах.
Чтобы двигаться дальше, давайте создадим резервную копию нашего текущего файла блока сервера:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bakТеперь откройте файл блока сервера для внесения изменений:
sudo nano /etc/nginx/sites-available/defaultВ своем блоке сервера вы, вероятно, начинаете со следующего:
server {
listen 80 default_server;
listen [::]:80 default_server;
# Конфигурация SSL
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
. . .Плюсы и минусы бесплатного ssl-сертификата от let’s encrypt
Давайте разберемся, стоит ли устанавливать бесплатный сертификат или приобрести платный – сравним все “за” и “против”:
Плюсы Let’s Encrypt:
- Является бесплатным (да, CEP) и может использоваться владельцами небольших сайтов;
- Надежное шифрование;
- Возможно автоматическое обновление сертификата с помощью специального клиента, который устанавливается на сервер и может изменять его настройки.
Минусы:
- Не все хостинг-компании поддерживают автоматическую выдачу и продление сертификатов;
- Сложная ручная установка;
- Клиент для автоматического продления получает разрешение на изменение конфигурации сервера (при ручной установке в VDS, не относится к компаниям виртуального хостинга). С одной стороны, это рассматривается как преимущество, но с другой стороны, весь сайт может пострадать от неправильной конфигурации;
- Короткий срок действия. Let’s Encrypt SSL чаще всего выдается на 90 дней, реже – на один год. Это означает, что каждые 90 дней вы должны проверять, не потерян ли сертификат во время автоматического обновления, или перевыпускать его вручную. Если вы не уложитесь в сроки, сайт может некоторое время оставаться без сертификата, что повлияет на доверие к нему пользователей и позиции в результатах поисковых систем;
- Могут возникнуть проблемы с установкой на виртуальном хостинге (который обычно является самым дешевым);
- Сертификат имеет проблемы совместимости с различными устройствами, ОС и операционными системами. Например, сертификат не работает на мобильных устройствах с версией прошивки ниже Android 2.3.6;
- Нет гарантии. Let’s Encrypt не несет ответственности за использование своих сертификатов. Если пользователь потеряет деньги на сайте с бесплатным сертификатом, например, в результате взлома, он не сможет их вернуть. Коммерческие центры сертификации возмещают убытки в зависимости от типа SSL-сертификата;
- Нет поддержки клиентов: только техническая документация на сайте, которая может показаться сложной для новичков;
- Бесплатные сертификаты менее функциональны, чем их платные аналоги. Например, Let’s Encrypt SSL не выдает сертификаты с зеленой линией или организационной проверкой, то есть не подходит для серьезных предприятий.
Как видите, есть много недостатков, которые необходимо учитывать. Стоит ли оно того, или лучше купить сертификат на один год и забыть о нем до следующего продления?
Распаковываем и устанавливаем ssl-сертификат на сайт
Теперь установите сертификат на свой сайт. Для этого проще всего воспользоваться услугами хостера. Например, я использую хостинг Beget. Следующие инструкции покажут вам, как установить SSL-сертификат:
Сколько сертификатов покупать
Вам понадобится всего один SSL-сертификат, если ваш блог, интернет-магазин или даже полноценный сайт, рассчитанный на широкую аудиторию, настроен правильно.
Сколько стоит ssl?
В зависимости от требуемого уровня безопасности плата за SSL может варьироваться от бесплатной до сотен долларов. От наименее безопасного к наиболее безопасному (и, как правило, от самой низкой к самой высокой цене):
- Сертификаты Domain Validated (DV) – для таких сайтов, как блоги или сайты малого бизнеса, которые не предоставляют информацию о клиентах.
- Сертификаты Organisation Validated (OV) – для таких сайтов, как коммерческие сайты с формами и возможностями генерации лидов, которые не передают конфиденциальную информацию о клиентах.
- Сертификаты с расширенной проверкой (EV) – самый высокий уровень безопасности для работы с конфиденциальной информацией, такой как финансовые транзакции.
Создаем сниппет конфигурации для ssl-ключа и сертификата
Сперва создадим сниппет конфигурации Nginx в папке /etc/nginx/snippets.
Назовем файл ssl-, затем укажем имя домена с .conf в конце, чтобы мы знали, для чего он нужен:
Создаем сниппет конфигурации с устойчивыми настройками шифрования
Следующим шагом будет определение некоторых параметров SSL с помощью другого сниппета. Nginx сможет подключить надежный “набор шифров” SSL и некоторые дополнительные функции для дальнейшей защиты нашего сервера.
Существуют различные алгоритмы, которые используются в конкретном сеансе TLS/SSL в наборе шифров. Это набор алгоритмов, используемых для шифрования и расшифровки данных в сеансе TLS/SSL:
- Алгоритм генерации ключа шифрования сеанса;
- Алгоритм, используемый для аутентификации сервера;
- Сам алгоритм симметричного шифрования трафика;
- И алгоритм проверки целостности (MAC, код аутентификации сообщения).
Чтобы облегчить повторное использование настроек, дадим файлу стандартное имя:
sudo nano /etc/nginx/snippets/ssl-params.confРекомендации на сайте Cipherli.st будут использованы для настройки безопасной связки Nginx-SSL. Приложение обеспечивает быстрый доступ к настройкам шифрования для популярного программного обеспечения. Для получения дополнительной информации см. руководство по настройке SSL для Nginx.
Примечание. Безопасность может быть надежной при использовании настроек Cipherli.st по умолчанию, но это может привести к проблемам совместимости. Нажмите на значок “Да, дайте мне шифрсуит, который работает с устаревшим/старым программным обеспечением”, если вам необходимо поддерживать старые клиенты. Такой список также может быть создан вручную.
Мы можем полностью скопировать предложенные настройки для наших целей. Для этого потребуется лишь несколько настроек.
Сначала добавим DNS-резольвер. В нашем учебнике будет использоваться тот, который предоставлен компанией Google. Присвойте параметру ssl_dhparam ссылку на файл ключей Диффи-Хеллмана, который мы создали ранее.
Файлы сертификата
После получения сертификата следующие файлы должны быть закодированы в PEM-коде:
Шаг 3. настраиваем tls/ssl на веб-сервере
Теперь вам нужно настроить веб-сервер Nginx так, чтобы он начал использовать ваш SSL-сертификат.
Давайте внесем несколько изменений в нашу конфигурацию:
- Создайте фрагмент конфигурации, содержащий расположение нашего SSL-сертификата и файлов ключей.
- Создайте фрагмент конфигурации, содержащий стабильную конфигурацию SSL, которая может быть использована в будущем для любого сертификата.
- Обновите серверные блоки в конфигурации Nginx, которые будут обрабатывать SSL-запросы, и используйте два приведенных выше фрагмента.
При использовании этого подхода конфигурация Nginx является чистой и многоразовой.
Шаг 4. настраиваем файрвол
Чтобы разрешить SSL-трафик, необходимо обновить настройки в брандмауэре UFW. После установки Nginx автоматически регистрирует несколько профилей в ufw.
Текущие настройки можно посмотреть, введя:
sudo ufw statusШаг 5. подключаем изменения в nginx
Nginx необходимо перезапустить, чтобы изменения вступили в силу, поскольку мы внесли изменения в конфигурацию и обновили правила межсетевого экрана.
Сначала необходимо проверить и убедиться, что в наших файлах нет синтаксических ошибок. Это можно сделать, набрав:
sudo nginx -tВ случае успеха ваш результат будет выглядеть следующим образом:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulСледовательно, если ваш конфигурационный файл не содержит ошибок, значит, синтаксические ошибки отсутствуют. Перезапустите Nginx для активации изменений:
sudo systemctl restart nginxШаг 6. настраиваем автоматическое обновление
Мы принимаем сертификаты Let’s Encrypt только на 90 дней. Пользователям рекомендуется автоматизировать процесс обновления. Нам потребуется команда для автоматизации процесса проверки и обновления сертификатов с истекшим сроком действия.
Чтобы начать проверку ежедневных обновлений, мы будем использовать Cron, который представляет собой системную службу для повторяющихся задач. Crontab используется для указания задач cron:
sudo crontab -eДобавьте следующую строку в конце, затем сохраните и закройте файл
Шаг 0. подготовка
Перед началом работы важно убедиться в нескольких моментах.
Должен быть доступен сервер, состоящий из Ubuntu 16.04 и настроенный с пользователем (не root), имеющим привилегии sudo. Следуйте шагам по настройке начального сервера Ubuntu 16.04 в руководстве по установке.
Доменные имена, для которых будет использоваться сертификат, должны принадлежать вам, или у вас должен быть доступ к их настройке. Если у вас нет зарегистрированного доменного имени, вы можете приобрести его с помощью регистратора (например, Namecheap или GoDaddy).
