Настройка SSL для любого веб-сайта является вызовом. Посетители сайта, браузеры и поисковые системы вознаграждают правильно защищенный веб-сайт с Secure Sockets Layer (SSL). Ранее этот процесс включал приобретение, установку и настройку SSL-сертификата. Однако с помощью Cloudflare SSL вы можете завершить процесс настройки SSL всего несколькими кликами!
В этой статье вы узнаете, как настроить ваш сайт с помощью шифрования SSL через Cloudflare. Таким образом, создайте связи с SSL-соединениями от начала до конца!
Предварительные условия
Чтобы следовать этому руководству, вам потребуются некоторые предварительные условия, перечисленные ниже:
- A Cloudflare account with an existing website and domain pointed to the Cloudflare nameservers.
- Сервер с Ubuntu Linux, установленный и настроенный с использованием NGINX. В этом руководстве показан процесс настройки на Linux и NGINX, но тот же общий процесс работает для IIS или Apache.
Настройка Cloudflare Universal SSL: только начало
Есть несколько способов настроить SSL с помощью Cloudflare. Часто самым быстрым методом является использование Универсального SSL. Почему? С Универсальным SSL вместо того, чтобы искать и покупать SSL-сертификат, Cloudflare предоставляет сертификат, после чего весь трафик, отправленный через Cloudflare, будет использовать этот сертификат.
После включения Универсального SSL Cloudflare предоставляет действующий SSL-сертификат как посетителям, так и поисковым системам. Кроме того, Cloudflare не требует настройки сервера или веб-сайта для использования этого сертификата—все просто!
1. Запустите ваш веб-браузер и войдите в панель управления Cloudflare.
2. Перейдите на ваш сайт из списка доменов вашего аккаунта, как показано ниже.

3. Теперь нажмите на SSL/TLS, чтобы просмотреть варианты шифрования вашего сайта.

4. Выберите вариант Гибкий, чтобы включить Универсальный SSL. После выбора изменения вступают в силу немедленно. Теперь ваш сайт зашифрован между браузером и Cloudflare!

Настройка Полного Шифрования от конца к концу
Хотя Универсальный SSL — отличный способ начать обеспечивать безопасность сайтов, он оставляет трафик между сервером и Cloudflare незащищенным. К счастью, существуют два режима шифрования для зашифровки трафика от Cloudflare к серверу, Полное и Полное (строгое) шифрование, каждое с основными различиями в требованиях к установке сертификатов.
- Полное – Требует сертификата на сервере, но это может быть самоподписанный сертификат.
- Полный (строгий) – Установленный серверный сертификат должен быть действительным сертификатом.
Давайте рассмотрим разницу между этими шифрованиями и как их настроить.
Настройка полного шифрования SSL/TLS с самоподписанным сертификатом
В отличие от универсального SSL, для полного шифрования SSL/TLS ваш веб-сервер должен правильно предоставлять SSL-сертификат для шифрования трафика от сервера до Cloudflare. Существует множество способов сделать это, но в этом руководстве показаны шаги на сервере Linux с NGINX.
Генерация самоподписанного сертификата
Для шифрования соединения между Cloudflare и вашим исходным сервером вам понадобится SSL-сертификат. Поскольку режим полного шифрования SSL/TLS не требует, чтобы сертификат был полностью доверенным, вы можете использовать самоподписанный сертификат, чтобы быстро запуститься.
1. Secure Shell (SSH) на вашем веб-сервере Linux.
2. Перейдите (cd
) в стандартный каталог SSL Ubuntu (/etc/ssl
) с помощью следующей команды. cd /etc/ssl

/etc/ssl
directory3. Теперь сгенерируйте как открытый, так и закрытый ключи для вашего сайта с помощью команды openssl
. Для этого выполните следующую команду openssl
.
Эта команда выполняет несколько действий:
- Запрашивает (
req
) сертификат X.509, предоставляемый параметром-x509
. - Когда ссылается на NGINX, позволяет NGINX читать сертификат при запуске с использованием параметра
-nodes
. - Указывает количество
дней
, в течение которых сертификат действителен. - Создает новый открытый и закрытый ключ с помощью
-newkey
с использованием шифрования RSA 2048 бит (rsa:2048
). - Сохраняет закрытый ключ в
/etc/ssl/private/nginx-selfsigned.key
с параметром-keyout
. - Сохраняет открытый ключ в
/etc/ssl/certs/nginx-selfsigned.crt
с использованием параметра-out
.
Если
openssl
возвращает безвредную ошибкуCan't load /root/.rnd into RNG
, вам нужно закомментировать строку#RANDFILE = $ENV::HOME/.rnd
в файле/etc/ssl/openssl.cnf
. Все современные версииopenssl
переключаются на использование системного устройства/dev/urandom
для данных случайной энтропии и не требуют определенного файла для инициализации.
4. После успешного выполнения команды openssl запросит у вас некоторую информацию. Ниже вы найдете все значения, предоставленные для этого руководства.
- Имя страны:
US
- Название штата или провинции:
Иллинойс
- Название населенного пункта:
Блумингтон
- Название организации:
Тестовая компания, ООО
- Название подразделения организации: <пусто>
- Общее имя:
test.adamlistek.me
- Адрес электронной почты:
[email protected]

5. В последней части убедитесь, что сертификат существует, используя команду test
. Если команда test
возвращает (echo $?
) 0
, то файл существует как ожидалось. Вы можете видеть на следующем скриншоте, что каждая команда вернула значение 0.

Настройка NGINX
Теперь, когда сертификат был сгенерирован и сохранен в каталогах ключей /etc/ssl/certs
и /etc/ssl/private
, необходимо настроить NGINX для применения сертификата и обслуживания контента сайта.
Конфигурации сайтов NGINX определяются в блоках server
, которые обычно содержатся в файлах виртуальных хостов. В приведенном ниже примере базовая конфигурация сайта хранится в файле test.adamlistek.me.conf
и включается в основной файл nginx.conf
.
1. Сначала создайте новый файл виртуального хоста с выбранным вами именем, но для этого примера назовите его test.adamlistek.me.conf
в каталоге /etc/nginx/vhosts.d
. Затем скопируйте содержимое ниже в файл виртуального хоста и сохраните его.
Замените доменное имя
test.adamlistek.me
на свое собственное, так как это только для демонстрационных целей. И если каталог/etc/nginx/vhosts.d
не существует, создайте каталог, выполнивmkdir /etc/nginx/vhosts.d
.
2. Убедитесь, что ваш основной конфигурационный файл NGINX, /etc/nginx/nginx.conf
, содержит необходимую строку include
в блоке http
, расположенном в конце блока.
3. Перезапустите NGINX с помощью следующей команды, если вы используете systemd, который является современным системным и сервисным менеджером для Linux.
4. Вернитесь к Cloudflare и убедитесь, что самоподписанный сертификат работает. Для этого отключите «оранжевое облако» для записи DNS под статусом прокси, как показано ниже. Отключение опции «оранжевое облако» обходит Cloudflare и обслуживает запросы напрямую с веб-сервера.

5. Убедитесь, что сайт возвращает вновь созданный самоподписанный сертификат, перейдя на веб-сайт в своем веб-браузере. В результате этого будет отображена предупреждающая страница, показанная ниже.

6. Наконец, включите полное шифрование TLS/SSL на Cloudflare. Для этого включите снова статус прокси Cloudflare “оранжевое облако” на ранее отключенной записи DNS. Затем перейдите на вкладку SSL/TLS и нажмите кнопку-переключатель Full, показанную ниже.

Генерация сертификатов источника для полного (строгого) шифрования SSL/TLS
Режим полного шифрования не гарантирует, что сертификат, представленный веб-сервером, имеет действительную цепочку сертификатов. Поэтому вместо этого выберите неполное шифрование, и Cloudflare примет любой сертификат, представленный сервером.
Cloudflare предлагает возможность генерации бесплатного сертификата TLS для защиты подключения к исходному серверу. Но есть два недостатка при использовании сертификата, предоставленного Cloudflare. Первый заключается в том, что вам необходимо сгенерировать и установить сертификат вручную. Второй заключается в том, что сертификат выглядит как самоподписанный сертификат, которому не доверяет ни один браузер, кроме Cloudflare.
Возможно автоматизировать генерацию сертификата, используя API Origin CA Create Certificate, но это выходит за рамки данного руководства.
1. Перейдите на исходный сервер, перейдя на вкладку SSL/TLS -> Исходный сервер, как показано ниже, и нажмите кнопку Создать сертификат.

2. Как вы можете видеть ниже, параметры по умолчанию уже установлены для генерации сертификата wildcard для домена с сроком действия 15 лет — прекрасно! Поэтому оставьте параметры по умолчанию и сгенерируйте сертификат, нажав на кнопку Создать в правом нижнем углу страницы.
A wildcard certificate, shown as
*.domain.com
, means that any subdomain will also be covered by this certificate including www.

3. Добавьте вновь созданный сертификат в вашу систему Linux, сначала сохраняя закрытый и открытый ключи с помощью текстового редактора GNU nano. Поскольку нужно сохранить два ключа, вам придется сохранить файлы ключей поочередно.
Обязательно сохраните закрытый ключ, поскольку он доступен только на момент создания оригинального сертификата. Если вы случайно потеряете этот ключ, отмените сертификат и переоформите новый сертификат.
Откройте терминал, затем создайте и откройте файл открытого ключа (nginx-test.adamlistek.me.crt
) в nano, запустив первую команду ниже.
Затем вернитесь на Cloudflare и скопируйте ключ Origin Certificate (открытый ключ), нажав на опцию Нажмите, чтобы скопировать, как показано ниже. Затем вставьте (Ctrl+U) скопированный вами открытый ключ в файл открытого ключа, открытый в nano. Сохраните изменения (Ctrl+O) и выйдите (Ctrl+X) из nano.
После сохранения файла открытого ключа повторите тот же процесс создания файла ключа, копирования ключа из Cloudfare и сохранения его в файле ключа. Но на этот раз вы создаете файл закрытого ключа (nginx-test.adamlistek.me.key
).

4. Теперь вы создали публичный и приватный ключи, укажите NGINX местоположение сертификатов. Сделайте это, изменив файл конфигурации test.adamlistek.me.conf
следующими строками, измененными для поддержки вашего домена.
5. Чтобы применить новые сертификаты, перезапустите NGINX следующей командой.
6. Теперь вернитесь к вкладке SSL/TLS в Cloudflare, обновите режим шифрования SSL/TLS, нажав на Full (strict), как показано ниже.

Включение строгого режима шифрования SSL/TLS с помощью LetsEncrypt
Самый большой недостаток использования сертификата Cloudflare origin заключается в том, что он доверяется только Cloudflare. Предположим, вам нужен полностью доверенный браузером сертификат, либо в качестве резервного варианта, либо для дальнейшего контроля. В этом случае LetsEncrypt предлагает возможность создания правильного сертификата.
Хотя вы можете использовать любой действительный сертификат, LetsEncrypt является общим выбором для генерации действительного сертификата. Существует несколько клиентов LetsEncrypt, но этот учебник демонстрирует клиент acme.sh.
Поскольку вы уже находитесь на Cloudflare, одним из лучших методов DNS-предоставления с LetsEncrypt является опция DNS.
1. Сначала откройте терминал и установите acme.sh с помощью команды curl
.

2. Далее необходимо создать или изменить файл account.conf
, расположенный в директории установки, чтобы добавить сохраненные ключи API Cloudflare. Эти ключи можно найти в разделе Профиль —> API-токены панели управления Cloudflare.
Хотя вы можете создать специфический токен с ограниченными правами, в данном руководстве используйте вместо этого Global API Key, как показано ниже.
3. Сгенерируйте сертификат с помощью следующей команды. Обратите внимание, что данная команда указывает клиенту acme.sh
использовать Cloudflare (dns_cf
) для проверки (--dns
) владения сертификатом. Затем устанавливается время ожидания (--dnsslep
) в 20 секунд перед выдачей (--issue
) сертификата для домена (-d
) test.adamlistek.me
.
По завершении команды ниже будут указаны пути, по которым можно найти ваш сертификат, ключ сертификата, промежуточный сертификат CA и полные цепочки сертификатов.

4. Как и ранее, измените конфигурацию сайта NGINX, чтобы изменить расположение ssl_certificate
и ssl_certificate_key
. Убедитесь, что замените /home/user
на местоположение вашей установки acme.sh.
5. Примените новую конфигурацию, перезапустив NGINX следующей командой.
6. Наконец, обновите режим шифрования SSL/TLS в Cloudflare, перейдя во вкладку SSL/TLS, затем нажмите на Полный (строгий).

Заключение
На протяжении этого учебного пособия вы узнали, как обеспечить безопасность вашего сайта с помощью различных вариантов SSL/TLS, предоставленных Cloudflare. Добавление LetsEncrypt к вашей конфигурации Cloudflare SSL также добавляет гибкий и управляемый пользователем вариант оригинального сертификата!
С учетом знаний о различных вариантах обеспечения безопасности соединения с посетителем сайта, вы будете работать над полностью безопасным соединением с вашим сервером с помощью Cloudflare SSL?