opened image

Настройка на Apache/Nginx сертификатов SSL и HTTPS

Важнейшую роль для мировой паутины в наши дни имеет безопасность передачи данных. Увы, но простые HTTP-сайты не обладают необходимым уровнем безопасности, поскольку незашифрованная передача информации слишком уязвима. Именно поэтому применение HTTPS и SSL-сертификатов приобрело фактически обязательный характер для уважающих себя ресурсов. Безусловно такая система применяется в банковской сфере и крупные маркетплейсы. Однако, от данного стандарта не отказываются и маленькие ресурсы, включая небольших блоггеров. 
 

Важность применения HTTPS
 

HTTPS (HyperText Transfer Protocol Secure) представляет собой усовершенствованную версию HTTP. Информация отправляется по защищенному каналу, в котором используется протокол TLS (Transport Layer Security) или SSL (Secure Sockets Layer) - устаревший аналог TLS. Применяя HTTPS удовлетворены три главных черты для безопасной работы в сети:

  1. Приватность – информация шифруются, из-за чего преступники не смогут ее перехватить и прочитать.

  2. Целостность – если информация не обнаружена, то изменить её невозможно. 

  3. Аутентификация – подтверждает, что веб-ресурс действительно принадлежит указанному домену. Это снижает опасность фишинговой атаки.

Без HTTPS любой, кто имеет доступ к сети (например, хакеры в публичном Wi-Fi), может получить доступ к данным, изменить их или попросту украсть во время передачи между веб-ресурсом и пользователем. Особое внимание хакеров привлекают ресурсы, обладающие системой авторизации и проводится работа с банковскими картами. Безусловно, это касается и других особо конфиденциальных данных. В наше время, под такую категорию подпадает большой массив данных, оперируя которыми преступники могут не только воровать ваши деньги, но и заниматься грубым вымогательством. 
 

Достоинства HTTPS
 

К преимуществам HTTPS относятся, естественно, не только защита данных, но и: 

Расположение аудитории – современные браузеры предупреждают пользователя о незащищенности сайтов. Разумеется, это влияет на доверие и отток аудитории.
Повышение позиций в SEO – когда сайт защищен HTTPS, то Google ставит его в поисковике на приоритетные позиции.
Защита от атак MITM (Man-in-the-Middle) – Протокол шифрования предотвращает подмену содержимого страницы.
Совместимость с современными технологиями– Современные веб-функции, такие как HTTP/2, работают только через HTTPS.

Принципы функционирования SSL-сертификата?
 

SSL-сертификат является цифровой подписью от удостоверяющего центра, обозначаемому как CA – Certificate Authority. SSL шифрует данные на ресурсе и указывает на законность и принадлежность владельцу домена. Браузер анализирует сертификат сайта с HTTPS, после чего предоставляет доступ к веб-ресурсу в безопасном режиме. 
 

Кстати у нас уже есть Руководство по настройке серверных SSL-сертификатовкатов. 
 

Виды сертификатов

  1. Domain Validation, или DV является классическим, основным сертификатом, которые подтверждает владение доменом.

  2. Organization Validation, или OV помимо проверки владельца домена, проводит верификацию организации, владеющей сайтом.

  3. Extended Validation, или EV включает имя организации в адресную строку, чем устанавливает наивысший уровень доверия.

  4. Wildcard SSL обеспечивает безопасность домену и поддоменам (*.example.com).

  5. Multi-Domain SSL, как становится понятно из названия, обеспечивает безопасность нескольких доменов используя лишь один сертификат.
     

Этап 1. Серверная организация
 

Удостоверимся, что наш сервер функционирует правильно и взаимодействует с необходимым веб-сервером правильно. Обновляем сервер, если это необходимо. После этого можно приступать к настройке HTTPS.

Перед настройкой HTTPS убедимся, что ваш сервер обновлен и работает с нужным веб-сервером.
 

1. Проводим диагностику инсталлированного веб-сервера

Убедимся, инсталлирован ли Apache:

apache2 -v

Если нет, то инсталлируем следующим образом:

sudo apt update && sudo apt install apache2 -y

Настройка на Apache/Nginx сертификатов SSL и HTTPS - 1

Проверим, установлен ли Nginx:

nginx -v

Настройка на Apache/Nginx сертификатов SSL и HTTPS - 2

Если Nginx отсутствует, установим его:

sudo apt update && sudo apt install nginx -y

 

2. Инсталляция firewall и обновлений 

Проводим системное обновление:

sudo apt update && sudo apt upgrade -y

 

Разрешаем HTTPS в firewall:

sudo ufw allow 443/tcp  

sudo ufw reload  

Настройка на Apache/Nginx сертификатов SSL и HTTPS - 3

Наконец, можно приступать к инсталляции сертификата SSL.
 

Этап 2. Получаем сертификат

Существует несколько видов сертификатов по типу распространения:

  • Бесплатные – Let's Encrypt, ZeroSSL.

  • Коммерческие – PositiveSSL, RapidSSL, Sectigo (хороший вариант для предприятий).

Мы же с вами изучим последовательность инсталляции Let's Encrypt руководствуясь Certbot.
 

1. Инсталляция Certbot

Для Apache:

sudo apt install certbot python3-certbot-apache -y

Для Nginx:

sudo apt install certbot python3-certbot-nginx -y

Настройка на Apache/Nginx сертификатов SSL и HTTPS - 5

2. Запрос SSL-сертификата

Для Apache:

sudo certbot --apache -d yourdomain.com -d www.yourdomain.com

Настройка на Apache/Nginx сертификатов SSL и HTTPS - 6

Для Nginx:

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

Автоматическое конфигурирование HTTPS произойдет после успешной инсталляции Certbot.

После всех совершенных манипуляций проверяем статус SSL-серификата:

sudo certbot certificates
 

Этап 3. Конфигурация HTTPS

На этом этапе потребуется вручную применить необходимые настройки HTTPS в Apache и Nginx.
 

1. Настройка в Apache

Сперва активируем конфигурацию виртуального хоста:

sudo nano /etc/apache2/sites-available/yourdomain.com.conf

Добавляем следующие HTTPS-настройки:

<VirtualHost *:443>

    ServerAdmin [email protected]

    ServerName yourdomain.com

    ServerAlias www.yourdomain.com

    DocumentRoot /var/www/yourdomain

    SSLEngine on

    SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem

    SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem

    <Directory /var/www/yourdomain>

        AllowOverride All

    </Directory>

</VirtualHost>

Настройка на Apache/Nginx сертификатов SSL и HTTPS - 7

 

Сохраняем (CTRL+X → Y → Enter) и делаем рестарт Apache:

sudo systemctl restart apache2
 

2. Настройка в Nginx

Активируем конфигурацию домена:

sudo nano /etc/nginx/sites-available/yourdomain.com

Добавляем HTTPS-блок:

server {

    listen 443 ssl;

    server_name yourdomain.com www.yourdomain.com;

 

    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;

    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

 

    root /var/www/yourdomain;

    index index.html index.php;

}

 

В конце проводим те же манипуляции, что и с Apache – сохраняем (CTRL+X → Y → Enter) и делаем рестарт Nginx:

sudo systemctl restart nginx

 

Правильно произведя поэтапную настройку, ваш ресурс будет теперь успешно работать по HTTPS.
 

Этап 4. Актуализация сертификатов в авторежиме 
 

Действие сертификатов Let's Encrypt ограничено 90-дневным сроком, но их можно, для вашего удобства, актуализировать в автоматическом режиме.
 

Для этого необходимо прописать автообновление через cron:

sudo crontab -e

Добавляем следующую строку:

0 3 * * 1 certbot renew --quiet

Теперь сертификаты будут сами обновляться по понедельникам в 3:00.
 

Этап 5. Проверка настройки
 

1. Проверка HTTPS-доступности

Открываем браузер и переходим на:

https://yourdomain.com

Если загрузка веб-ресурса происходит без сбоев, то SSL настроен правильно.
 

2. Проверка защищенности сертификата
 

Для проведения анализа конфигурации HTTPS применяет инструмент SSL Labs.

Также можно выполнить локальную проверку:

openssl s_client -connect yourdomain.com:443

Заключение

Подводя итоги, обязательно укажем, что HTTPS и SSL однозначно необходимо настроить на сервере. Данный шаг является важным этапом в построении защищенной среды для данных, обрабатываемых ресурсов, а также для повышения уровня доверия со стороны массовой аудитории. Кроме того, это позволит поднять SEO для вашего сайта. Кроме того, мы рассмотрели поэтапную инсталляцию Let’s Enscrypt как для Apache, так и для Nginx. Настроили конфигурационные файлы, способы мониторинга безопасности и автоматизировали обновления SSL.
 

Ключевые выводы:

  1. Защита информации — HTTPS позволяет предотвратить утечку информации  и обеспечивает защиту от MITM-атак "человек посередине".

  2. Улучшение SEO — Google в разы лучше относится к сайтам с HTTPS, положительно влияя на ранг в поисковой выдаче.

  3. Доверие пользователей — браузеры обозначают сайты на HTTP как "Небезопасные". Это влияет на уровень конверсии понижая её.

  4. Бесплатные сертификаты от Let's Encrypt дают возможность легко внедрить HTTPS, но требуют регулярной актуализации.

  5. Коммерческие обеспечивают расширенные функции (Wildcard, EV-сертификаты). Являются отличными вариантами для крупных проектов.
     

Дополнительные рекомендации:
 

Систематически проверяйте статус SSL
sudo certbot certificates

  • Это гарантирует его актуальность.
     

Примените строгую политику безопасности
Включите HTTP Strict Transport Security (HSTS), чтобы браузеры автоматически использовали HTTPS:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Для Apache:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

 

Используйте только современные криптографические алгоритмы
Для Nginx можно включить безопасные шифры:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;

Для Apache:
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5

 

Настройте автоматическую актуализацию SSL-сертификатов
sudo certbot renew --dry-run

Настройка на Apache/Nginx сертификатов SSL и HTTPS  - 8

  • Этот тест поможет убедиться, что процесс продления сертификатов работает корректно.

  • Следите за журналами ошибок
    Если после установки SSL что-то работает некорректно, проверьте логи:

Apache:
sudo tail -f /var/log/apache2/error.log

Nginx:
sudo tail -f /var/log/nginx/error.log

  • Используйте онлайн-инструменты проверки безопасности
    Например, Qualys SSL Labs поможет оценить уровень защиты вашего HTTPS.

     

Когда стоит использовать платный SSL?
 

Хотя Let's Encrypt отлично подходит для большинства сайтов, в некоторых случаях лучше выбрать коммерческий SSL-сертификат:

Если нужен Wildcard SSL для защиты поддоменов (например, *.yourdomain.com).
Для ресурсов корпораций с более глубокой верификацией (EV SSL).
При необходимости улучшения совместимости с устройствами и веб-браузерами старого образца.
Когда важна страховая защита (некоторые коммерческие сертификаты предлагают гарантию на случай компрометации).

 

Заключительные мысли

Конфигурация HTTPS —  представляет из себя процесс постоянный и требуемый беспрерывного внимание к себе. Одной инсталляции SSL-сертификата будет недостаточно. За этим стоит цепочка из конкретных обязанностей: мониторить обновления и потенциальные уязвимости, поддерживать безопасность конфигураций.

Не откладывайте переход на HTTPS — это необходимость для безопасности вашего проекта.