Что нас интересует при покупке или аренде сервера? Ну, наверное как поднять ПО и защититься от атак.
Как раз в этой статье покажу максимально простой способ как с помощью CloudFlare можно наглухо закрыть сервер от левых запросиков и попыток залезть куда не просят.
Защита от DDoS, шифрование в самом хардкорном режиме end-to-end (strict), SSL-сертификат, а так же анализ трафика с лёгким сжатием отдаваемых данных.
Настройка CloudFlare
В интернете полно руководств как зарегистрировать аккаунт и привязать домен. Надеюсь вы это сделали. Если нет – бегом делать.
В меню открываем пункт “SSL/TLS” -> “Overview”. Ставим “encryption mode” на “Full (strict)”.
Не забываем блоком ниже в “SSL/TLS Recommender” поставить галочку. Отлично, четверть дела сделана!
Генерация Origin-сертификата
Самое вкусное – создание сертификата и ключа.
В меню открываем пункт “SSL/TLS” -> “Origin Server”. В самом низу страницы ставим галочку “Authenticated Origin Pulls”, затем сверху ищем кнопку “Create Certificate” и видим следующую картину:
Советую оставить всё как есть и жать “Create” снизу, после чего появится страница с двумя отдельными окнами текста. Первый скопируйте и сохраните как файл “cert.pem”, а второй “key.pem”.
Настройка сервера
Теперь дело за малым: куда-то пристроить сертификаты на сервере. У вас может быть установлено приложение или Apache – цепляйте туда. Я покажу как это сделать в NGINX.
Для корректной работы нужно сделать еще один сертификат, который выступит гарантом шифрования во всей цепи.
За основу возьмём сертификат от DigiCert. В консоли сервера пишем:
# Выкачиваем сертификат
wget https://dl.cacerts.digicert.com/EncryptionEverywhereDVTLSCA-G1.crt
# На базе сертификата создаём новый в формате PEM
openssl x509 -inform DER -outform PEM -in EncryptionEverywhereDVTLSCA-G1.crt -out chain.pem
Итого получится три файла:
- cert.pem
- key.pem
- chain.pem
Их перемещаем в папку /etc/ssl или в любую другую. Это не важный момент, просто запомните путь.
Откройте файл конфигурации домена NGINX и перенесите изменения из примера ниже:
server {
listen 443 ssl;
server_name site.ru;
ssl on;
ssl_certificate /etc/ssl/cert.pem;
ssl_certificate_key /etc/ssl/key.pem;
ssl_client_certificate /etc/ssl/chain.pem;
ssl_verify_client on;
}
server {
listen 80;
server_name site.ru;
return 301 https://$server_name$request_uri;
}
Обратите внимание на поле “server_name”. Он должен соответствовать вашим настройкам.
Проверим, что сайт доступен по адресу https://site.ru.
Выводы
Это всё, да-да. Если не пропустили пункты и были внимательны, то ваш сайт должен уже заработать.
Можно обойтись без NGINX/Apache и просто скормить приложению сертификаты. Например NextCloud. С документацией разберись только.
Теперь у тебя есть SSL у домена, end-to-end шифрование и аутентификация при помощи штатного функционала Authenticated Origin Pulls.