One place for hosting & domains

      CloudFlare

      Хостинг сайта с использованием Cloudflare и Nginx в Ubuntu 18.04


      Автор выбрал фонд Electronic Frontier Foundation для получения пожертвований в рамках программы Write for DOnations.

      Введение

      Cloudflare — это служба, располагающаяся между посетителем и сервером владельца сайта, выступающая как обратный прокси-сервер для сайтов. Cloudflare предоставляет сеть доставки контента (CDN), а также защиту от DDoS и распределенные службы сервера доменных имен.

      Nginx — это популярный веб-сервер, на котором размещены многие крупнейшие сайты с самым большим трафиком в Интернете. Организации часто обслуживают сайты с помощью Nginx и используют Cloudflare как поставщика CDN и DNS.

      В этом обучающем модуле вы научитесь защищать свой сайт, обслуживаемый Nginx, сертификатом ЦС Origin от Cloudflare и настраивать Nginx для использования запросов pull с аутентификацией. Преимущества такой системы заключаются в том, что вы используете CDN и быстрое разрешение DNS от Cloudflare и гарантируете проведение всех соединений через Cloudflare. Это не даст вредоносным запросам достичь вашего сервера.

      Предварительные требования

      Для прохождения данного обучающего руководства вам потребуется следующее:

      Шаг 1 — Генерирование сертификата TLS от ЦС Origin

      Центр сертификации Cloudflare Origin позволяет сгенерировать бесплатный сертификат TLS, подписанный Cloudflare, для установки на ваш сервер Nginx. Используя сгенерированный сертификат TLS Cloudflare, вы можете защитить соединение между серверами Cloudflare и вашим сервером Nginx.

      Для генерирования сертификата с использованием ЦС Origin выполните вход в свою учетную запись Clouflare через браузер. Выберите домен, который хотите защитить, и перейдите в раздел SSL/TLS панели управления Cloudflare. Откройте вкладку Origin Server (Сервер Origin) и нажмите кнопку Create Certificate (Создать сертификат):

      Опция создания сертификата в панели управления Cloudflare

      Оставьте выбранной опцию по умолчанию Let Cloudflare generate a private key and a CSR (Позволить Cloudflare сгенерировать закрытый ключ и CSR).

      Опции графического интерфейса ЦС Origin

      Нажмите Next (Далее), и вы увидите диалоговое окно с сертификатом Origin и закрытым ключом. Вам потребуется переместить сертификат Origin и закрытый ключ с сервера Cloudflare на ваш сервер. Для дополнительной безопасности информация закрытого ключа больше не будет отображаться, поэтому вам следует скопировать ключ на свой сервер, прежде чем нажать OK.

      Диалоговое окно с сертификатом Origin и закрытым ключом

      Мы будем использовать каталог /etc/ssl на сервере для хранения сертификата Origin и файлов закрытого ключа. Эта папка уже существует на сервере.

      Вначале скопируйте содержимое сертификата Origin, отображаемое в диалоговом окне вашего браузера.

      Затем откройте на сервере файл /etc/ssl/cert.pem в предпочитаемом текстовом редакторе:

      • sudo nano /etc/ssl/cert.pem

      Добавьте в файл содержимое сертификата. Сохраните файл и закройте редактор.

      Затем вернитесь в браузер и скопируйте содержимое закрытого ключа. Откройте файл /etc/ssl/key.pem для редактирования:

      • sudo nano /etc/ssl/key.pem

      Вставьте в файл закрытый ключ, закройте файл и выйдите из редактора.

      Примечание. Иногда при копировании сертификата и ключа из панели управления Cloudflare и их вставке в соответствующие файлы на сервере в файлы могут быть добавлены пустые строки. Nginx рассматривает такие сертификаты и ключи как некорректные, поэтому следует убедиться, что в файлах нет пустых строк.

      Предупреждение. Сертификату ЦС Cloudflare Origin CA доверяет только Cloudflare, и поэтому его следует использовать только на серверах Origin, имеющих активное подключение к Cloudflare. Если вы приостановите или отключите Cloudflare в любой момент, при обработке сертификата ЦС Origin CA будет выведена ошибка отсутствия доверия к сертификату.

      Мы скопировали файлы ключа и сертификата на сервер, и теперь нам нужно обновить конфигурацию Nginx для их использования.

      Шаг 2 — Установка сертификата ЦС Origin в Nginx

      В предыдущем разделе мы сгенерировали сертификат Origin и закрытый ключ, используя панель управления Cloudlfare, а также сохранили файлы на сервере. Теперь мы обновим конфигурацию Nginx нашего сайта, чтобы использовать сертификат Origin и закрытый ключ для защиты соединения между серверами Cloudflare и вашим сервером.

      Для начала убедитесь, что брандмауэр UFW разрешает трафик HTTPS. Включите опцию Nginx Full, которая открывает порт 80 (HTTP) и порт 443 (HTTPS):

      • sudo ufw allow 'Nginx Full'

      Перезагрузите UFW:

      Убедитесь, что новые правила разрешены и брандмауэр UFW активен:

      Результат должен будет выглядеть следующим образом:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)

      Теперь вы готовы к настройке серверного блока Nginx. Во время установки Nginx создает серверный блок по умолчанию. Удалите его, если он еще существует, поскольку мы уже настроили персонализированный серверный блок для вашего домена:

      • sudo rm /etc/nginx/sites-enabled/default

      Затем откройте файл конфигурации Nginx для вашего домена:

      • sudo nano /etc/nginx/sites-available/your_domain

      Файл должен выглядеть следующим образом:

      /etc/nginx/sites-available/your_domain

      server {
              listen 80;
              listen [::]:80;
      
              root /var/www/your_domain/html;
              index index.html index.htm index.nginx-debian.html;
      
              server_name your_domain www.your_domain;
      
              location / {
                      try_files $uri $uri/ =404;
              }
      }
      
      

      Мы изменим конфигурацию Nginx, чтобы она выполняла следующее:

      • Прослушивание порта 80 и перенаправление всех запросов с использованием https.
      • Прослушивание порта 443 и использование сертификата Origin и закрытого ключа, добавленных на предыдущем шаге.

      Измените файл, чтобы он выглядел следующим образом:

      /etc/nginx/sites-available/your_domain

      server {
          listen 80;
          listen [::]:80;
          server_name your_domain www.your_domain;
          return 302 https://$server_name$request_uri;
      }
      
      server {
      
          # SSL configuration
      
          listen 443 ssl http2;
          listen [::]:443 ssl http2;
          ssl        on;
          ssl_certificate         /etc/ssl/cert.pem;
          ssl_certificate_key     /etc/ssl/key.pem;
      
          server_name your_domain www.your_domain;
      
          root /var/www/your_domain/html;
          index index.html index.htm index.nginx-debian.html;
      
      
          location / {
                  try_files $uri $uri/ =404;
          }
      }
      

      Сохраните файл и выйдите из редактора.

      Протестируйте файлы конфигурации Nginx на отсутствие ошибок синтаксиса:

      Если проблем обнаружено не будет, перезапустите Nginx для активации изменений:

      • sudo systemctl restart nginx

      Откройте раздел SSL/TLS панели управления Cloudflare, перейдите на вкладку Overview (Обзор) и измените режим шифрования SSL/TLS на Full (strict) (Полный (строгий)). Это предпишет Cloudflare всегда шифровать соединение между Cloudflare и вашим сервером Nginx.

      Активируйте полный (строгий) режим SSL на панели управления Cloudflare

      Теперь откройте свой сайт по адресу https://your_domain и убедитесь, что он правильно настроен. Вы увидите свою домашнюю страницу, и браузер сообщит, что сайт защищен.

      В следующем разделе мы настроим аутентификацию запросов pull ЦС Origin для подтверждения того, что ваш сервер взаимодействует именно с Cloudflare, а не с каким-то другим сервером. Так мы настроим Nginx принимать только те запросы, в которых используется действующий сертификат клиента от Cloudflare, а все запросы, не проходящие через Cloudflare, будут отбрасываться.

      Шаг 3 — Настройка запросов pull ЦС Origin с аутентификацией

      Сертификат ЦС Origin помогает Cloudflare подтверждать взаимодействие с правильным сервером Origin. На этом шаге мы используем аутентификацию клиента TLS, чтобы подтвердить взаимодействие вашего сервера Nginx с Cloudflare.

      При установлении связи TLS с аутентификацией клиента обе стороны предоставляют сертификат для проверки. Сервер Origin настроен так, чтобы принимать только те запросы, в которых используется действующий сертификат клиента от Cloudflare. Запросы, не проходящие через Cloudflare, будут отклоняться, поскольку у них не будет сертификата Cloudflare. Это означает, что злоумышленники не смогут обходить меры безопасности Cloudflare и подключаться к вашему серверу Nginx напрямую.

      Cloudflare предоставляет сертификаты, подписанные ЦС со следующим сертификатом:

      -----BEGIN CERTIFICATE-----
      MIIGCjCCA/KgAwIBAgIIV5G6lVbCLmEwDQYJKoZIhvcNAQENBQAwgZAxCzAJBgNV
      BAYTAlVTMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMRQwEgYDVQQLEwtPcmln
      aW4gUHVsbDEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UECBMKQ2FsaWZv
      cm5pYTEjMCEGA1UEAxMab3JpZ2luLXB1bGwuY2xvdWRmbGFyZS5uZXQwHhcNMTkx
      MDEwMTg0NTAwWhcNMjkxMTAxMTcwMDAwWjCBkDELMAkGA1UEBhMCVVMxGTAXBgNV
      BAoTEENsb3VkRmxhcmUsIEluYy4xFDASBgNVBAsTC09yaWdpbiBQdWxsMRYwFAYD
      VQQHEw1TYW4gRnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMSMwIQYDVQQD
      ExpvcmlnaW4tcHVsbC5jbG91ZGZsYXJlLm5ldDCCAiIwDQYJKoZIhvcNAQEBBQAD
      ggIPADCCAgoCggIBAN2y2zojYfl0bKfhp0AJBFeV+jQqbCw3sHmvEPwLmqDLqynI
      42tZXR5y914ZB9ZrwbL/K5O46exd/LujJnV2b3dzcx5rtiQzso0xzljqbnbQT20e
      ihx/WrF4OkZKydZzsdaJsWAPuplDH5P7J82q3re88jQdgE5hqjqFZ3clCG7lxoBw
      hLaazm3NJJlUfzdk97ouRvnFGAuXd5cQVx8jYOOeU60sWqmMe4QHdOvpqB91bJoY
      QSKVFjUgHeTpN8tNpKJfb9LIn3pun3bC9NKNHtRKMNX3Kl/sAPq7q/AlndvA2Kw3
      Dkum2mHQUGdzVHqcOgea9BGjLK2h7SuX93zTWL02u799dr6Xkrad/WShHchfjjRn
      aL35niJUDr02YJtPgxWObsrfOU63B8juLUphW/4BOjjJyAG5l9j1//aUGEi/sEe5
      lqVv0P78QrxoxR+MMXiJwQab5FB8TG/ac6mRHgF9CmkX90uaRh+OC07XjTdfSKGR
      PpM9hB2ZhLol/nf8qmoLdoD5HvODZuKu2+muKeVHXgw2/A6wM7OwrinxZiyBk5Hh
      CvaADH7PZpU6z/zv5NU5HSvXiKtCzFuDu4/Zfi34RfHXeCUfHAb4KfNRXJwMsxUa
      +4ZpSAX2G6RnGU5meuXpU5/V+DQJp/e69XyyY6RXDoMywaEFlIlXBqjRRA2pAgMB
      AAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgECMB0GA1Ud
      DgQWBBRDWUsraYuA4REzalfNVzjann3F6zAfBgNVHSMEGDAWgBRDWUsraYuA4REz
      alfNVzjann3F6zANBgkqhkiG9w0BAQ0FAAOCAgEAkQ+T9nqcSlAuW/90DeYmQOW1
      QhqOor5psBEGvxbNGV2hdLJY8h6QUq48BCevcMChg/L1CkznBNI40i3/6heDn3IS
      zVEwXKf34pPFCACWVMZxbQjkNRTiH8iRur9EsaNQ5oXCPJkhwg2+IFyoPAAYURoX
      VcI9SCDUa45clmYHJ/XYwV1icGVI8/9b2JUqklnOTa5tugwIUi5sTfipNcJXHhgz
      6BKYDl0/UP0lLKbsUETXeTGDiDpxZYIgbcFrRDDkHC6BSvdWVEiH5b9mH2BON60z
      0O0j8EEKTwi9jnafVtZQXP/D8yoVowdFDjXcKkOPF/1gIh9qrFR6GdoPVgB3SkLc
      5ulBqZaCHm563jsvWb/kXJnlFxW+1bsO9BDD6DweBcGdNurgmH625wBXksSdD7y/
      fakk8DagjbjKShYlPEFOAqEcliwjF45eabL0t27MJV61O/jHzHL3dknXeE4BDa2j
      bA+JbyJeUMtU7KMsxvx82RmhqBEJJDBCJ3scVptvhDMRrtqDBW5JShxoAOcpFQGm
      iYWicn46nPDjgTU0bX1ZPpTpryXbvciVL5RkVBuyX2ntcOLDPlZWgxZCBp96x07F
      AnOzKgZk4RzZPNAxCXERVxajn/FLcOhglVAKo5H0ac+AitlQ0ip55D2/mf8o72tM
      fVQ6VpyjEXdiIXWUq/o=
      -----END CERTIFICATE-----
      

      Также вы можете загрузить сертификат напрямую из Cloudflare здесь.

      Скопируйте этот сертификат.

      Затем создайте файл /etc/ssl/cloudflare.crt для хранения сертификата Cloudflare:

      • sudo nano /etc/ssl/cloudflare.crt

      Добавьте сертификат в файл. Сохраните файл и выйдите из редактора.

      Обновите конфигурацию Nginx для использования запросов pull ЦС Origin с аутентификацией TLS. Откройте файл конфигурации вашего домена:

      • sudo nano /etc/nginx/sites-available/your_domain

      Добавьте директивы ssl_client_certificate и ssl_verify_client, как показано в следующем примере:

      /etc/nginx/sites-available/your_domain

      . . .
      
      server {
      
          # SSL configuration
      
          listen 443 ssl http2;
          listen [::]:443 ssl http2;
          ssl        on;
          ssl_certificate         /etc/ssl/cert.pem;
          ssl_certificate_key     /etc/ssl/key.pem;
          ssl_client_certificate /etc/ssl/cloudflare.crt;
          ssl_verify_client on;
      
          . . .
      

      Сохраните файл и выйдите из редактора.

      Проведите тестирование и убедитесь, что в вашей конфигурации Nginx нет ошибок синтаксиса:

      Если проблем обнаружено не будет, перезапустите Nginx для активации изменений:

      • sudo systemctl restart nginx

      Для аутентификации запросов pull откройте раздел SSL/TLS в панели управления Cloudflare, перейдите на вкладку Origin Server (Сервер Origin) и включите опцию Authenticated Origin Pulls (Запросы pull сервера Origin с аутентификацией).

      Включить запросы pull сервера Origin с аутентификацией

      Откройте сайт по адресу https://your_domain для проверки правильности настройки. Как и в предыдущем случае, вы увидите свою домашнюю страницу.

      Чтобы ваш сервер принимал только запросы, подписанные ЦС Cloudflare, отключите опцию Authenticated Origin Pulls (Запросы pull сервера Origin с аутентификацией) и перезагрузите свой сайт. Вы должны получить следующее сообщение об ошибке:

      Сообщение об ошибке

      Ваш сервер Origin выдаст сообщение об ошибке, если запрос не подписан ЦС Cloudflare.

      Примечание. Большинство браузеров кэшируют запросы, и, чтобы увидеть вышеуказанное изменение, вы можете использовать режим инкогнито/ конфиденциального просмотра в своем браузере. Чтобы не дать Cloudflare кэшировать запросы во время настройки сайта, перейдите на вкладку Overview (Обзор) в панели управления Cloudflare и включите опцию Development Mode (Режим разработки).

      Теперь вы знаете, что все работает нормально, и вам нужно будет вернуться в раздел SSL/TLS на панели управления Cloudflare, перейти на вкладку Origin Server (Сервер Origin) и включить опцию Authenticated Origin Pulls (Запросы pull ЦС Origin с аутентификацией).

      Заключение

      В этом обучающем модуле мы защитили сайт на базе Nginx посредством шифрования трафика между Cloudflare и сервером Nginx с использованием сертификата ЦС Origin от Cloudflare. Затем мы настроили запросы pull ЦС Origin с аутентификацией на сервере Nginx, чтобы он принимал только запросы с серверов Cloudflare, и чтобы никто больше не мог подключиться к серверу Nginx напрямую.



      Source link

      Cómo alojar un sitio web usando Cloudflare y Nginx en Ubuntu 20.04


      El autor seleccionó Electronic Frontier Foundation para recibir una donación como parte del programa Write for DOnations.

      Introducción

      Cloudflare es un servicio que se encuentra entre el visitante y el servidor del propietario del sitio web, que actúa como un proxy inverso para los sitios web. Cloudflare proporciona una Red de distribución de contenido (CDN), así como servicios de mitigación de DDoS y de servidor de nombres de dominio distribuidos.

      Nginx es un servidor web popular responsable de alojar algunos de los sitios de mayor tamaño y mayor tráfico en Internet. Es común que las organizaciones sirvan a sitios web con Nginx y utilicen Cloudflare como un proveedor de CDN y DNS.

      En este tutorial, protegerá su sitio web servido por Nginx con un certificado Origin CA de Cloudflare y a continuación configurará Nginx para usar solicitudes de incorporación de cambios autenticadas. Las ventajas de usar esta configuración son que se beneficia de la CDN de Cloudflare y de la rápida resolución DNS al tiempo que garantiza que todas las conexiones pasen a través de Cloudflare. Esto evita que cualquier solicitud maliciosa llegue a su servidor.

      Requisitos previos

      Para completar este tutorial, necesitará lo siguiente:

      Paso 1: Generar un certificado TLS de Origin CA

      El Cloudflare Origin CA le permite generar un certificado TLS gratuito firmado por Cloudflare para instalarlo en su servidor Nginx. Mediante el certificado TLS generado por Cloudflare, puede proteger la conexión entre los servidores de Cloudflare y su servidor Nginx.

      Para generar un certificado con Origin CA, inicie sesión en su cuenta de Cloudflare en un navegador web. Seleccione el dominio que desea proteger y vaya a la sección SSL/TLS de su panel de control de Cloudflare. Desde ahí, vaya a la pestaña Servidor de origen y haga clic en el botón Crear certificado:

      Cree la opción de certificado en el panel de control de Cloudflare

      Deje la opción predeterminada de Permitir que Cloudflare genere una clave privada y una CSR seleccionada.

      Opciones de GUI de Origin CA

      Haga clic en Siguiente y verá un diálogo con el Certificado de origen y la Clave privada. Debe transferir tanto el certificado de origen como la clave privada desde Cloudflare a su servidor. Por razones de seguridad, la información de la clave privada no se mostrará de nuevo, de forma que debe copiarla a su servidor antes de hacer clic en Ok.

      Diálogo que muestra el certificado de origen y la clave privada

      Usaremos el directorio /etc/ssl en el servidor para guardar el certificado de origen y los archivos de claves privados. La carpeta ya existe en el servidor.

      Primero, copie el contenido del Certificado de origen que se muestra en el cuadro de diálogo de su navegador.

      A continuación, en su servidor, abra /etc/ssl/cert.pem en su editor de texto preferido:

      • sudo nano /etc/ssl/cert.pem

      Añada el contenido del certificado al archivo. Guarde y salga del editor.

      A continuación, vuelva a su navegador y copie el contenido de la clave privada. Abra el archivo /etc/ssl/key.pem para editarlo:

      • sudo nano /etc/ssl/key.pem

      Pegue la clave privada en el archivo, guárdelo y salga del editor.

      Nota: A veces, cuando copie el certificado y la clave desde el panel de control de Cloudflare y lo pegue en los archivos pertinentes del servidor, se insertan líneas en blanco. Nginx tratará esos certificados y claves como no válidas, de forma que asegúrese de que no haya líneas en blanco en sus archivos.

      Advertencia: Cloudflare solo confía en el certificado de Origin CA de Cloudflare y, por tanto, solo debería usar los servidores de origen que están activamente conectados a Cloudflare. Si en algún momento detiene o deshabilita Cloudflare, su certificado Origin CA arrojará un error de certificado no fiable.

      Ahora que copió los archivos de la clave y del certificado a su servidor, deberá actualizar la configuración de Nginx para usarlos.

      Paso 2: Instalar el certificado Origin CA en Nginx

      En la sección anterior, generó un certificado de origen y una clave privada usando el panel de control de Cloudflare y guardó los archivos en su servidor. Ahora actualizará la configuración Nginx para su sitio para usar el certificado de origen y la clave privada para proteger la conexión entre los servidores de Cloudflare y su servidor.

      Primero, asegúrese de que UFW permitirá el tráfico HTTPS. Habilite Nginx Full, que abrirá el puerto 80 (HTTP) y el puerto 443 (HTTPS):

      • sudo ufw allow 'Nginx Full'

      Ahora vuelva a cargar UFW:

      Por último, compruebe que se permiten sus nuevas reglas y que UFW está activo:

      Verá un resultado similar a este:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)

      Ahora está listo para ajustar su bloque de servidor Nginx. Nginx crea un bloque de servidor predeterminado durante la instalación. Elimínelo si aún existe, ya que ya ha configurado un bloque de servidor personalizado para su dominio:

      • sudo rm /etc/nginx/sites-enabled/default

      A continuación, abra el archivo de configuración Nginx para su dominio:

      • sudo nano /etc/nginx/sites-available/your_domain

      El archivo debería tener este aspecto:

      /etc/nginx/sites-available/your_domain

      server {
              listen 80;
              listen [::]:80;
      
              root /var/www/your_domain/html;
              index index.html index.htm index.nginx-debian.html;
      
              server_name your_domain www.your_domain;
      
              location / {
                      try_files $uri $uri/ =404;
              }
      }
      
      

      Modificaremos el archivo de configuración Nginx para hacer lo siguiente:

      • Escuche el puerto 80 y redireccione todas las solicitudes para usar https.
      • Escuche el puerto 443 y utilice el certificado de origen y la clave privada que añadió en la sección anterior.

      Modifique el archivo de forma que se vea lo siguiente:

      /etc/nginx/sites-available/your_domain

      server {
          listen 80;
          listen [::]:80;
          server_name your_domain www.your_domain;
          return 302 https://$server_name$request_uri;
      }
      
      server {
      
          # SSL configuration
      
          listen 443 ssl http2;
          listen [::]:443 ssl http2;
          ssl_certificate         /etc/ssl/cert.pem;
          ssl_certificate_key     /etc/ssl/key.pem;
      
          server_name your_domain www.your_domain;
      
          root /var/www/your_domain/html;
          index index.html index.htm index.nginx-debian.html;
      
      
          location / {
                  try_files $uri $uri/ =404;
          }
      }
      

      Guarde el archivo y salga del editor.

      A continuación, compruebe que no haya errores de sintaxis en ninguno de sus archivos de configuración Nginx:

      Si no encontró problemas, reinicie Nginx para habilitar sus cambios:

      • sudo systemctl restart nginx

      Ahora vaya a la sección SSL/TLS del panel de control de Cloudflare, vaya a la pestaña Vista general, y cambie el modo de cifrado SSL/TLS a Full (strict). Esto informa a Cloudflare para que cifre siempre la conexión entre Cloudflare y su servidor Nginx de origen.

      Habilite el modo SSL Full(strict) en el panel de control de Cloudflare

      Ahora visite su sitio web en https://your_domain para verificar que se haya configurado correctamente. Verá su página de inicio y el navegador informará de que el sitio es seguro.

      En la siguiente sección, configurará las incorporaciones de cambios de origen autenticadas para verificar que su servidor de origen de hecho está hablando con Cloudflare y no con otro servidor. Al hacerlo, Nginx se configurará para solo aceptar solicitudes que utilicen un certificado de cliente válido desde Cloudflare. Se eliminarán todas las solicitudes que no hayan pasado a través de Cloudflare.

      Paso 3: Configurar las incorporaciones de cambios de origen autenticadas

      El certificado Origin CA ayudará a Cloudflare a verificar que está hablando con el servidor de origen correcto. Este paso utilizará Autenticación de cliente TLS para verificar que su servidor Nginx de origen está hablando con Cloudflare.

      En una conexión TLS autenticada por el cliente, ambos lados proporcionan un certificado para verificarlo. El servidor de origen está configurado para solo aceptar solicitudes que utilizan un certificado de cliente válido desde Cloudflare. Las solicitudes que no hayan pasado a través de Cloudflare se eliminarán, ya que no tendrán el certificado de Cloudflare. Esto significa que los atacantes no pueden eludir las medidas de seguridad de Cloudflare y conectarse directamente a su servidor Nginx.

      Cloudflare presenta los certificados firmados por una CA con el siguiente certificado:

      -----BEGIN CERTIFICATE-----
      MIIGCjCCA/KgAwIBAgIIV5G6lVbCLmEwDQYJKoZIhvcNAQENBQAwgZAxCzAJBgNV
      BAYTAlVTMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMRQwEgYDVQQLEwtPcmln
      aW4gUHVsbDEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UECBMKQ2FsaWZv
      cm5pYTEjMCEGA1UEAxMab3JpZ2luLXB1bGwuY2xvdWRmbGFyZS5uZXQwHhcNMTkx
      MDEwMTg0NTAwWhcNMjkxMTAxMTcwMDAwWjCBkDELMAkGA1UEBhMCVVMxGTAXBgNV
      BAoTEENsb3VkRmxhcmUsIEluYy4xFDASBgNVBAsTC09yaWdpbiBQdWxsMRYwFAYD
      VQQHEw1TYW4gRnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMSMwIQYDVQQD
      ExpvcmlnaW4tcHVsbC5jbG91ZGZsYXJlLm5ldDCCAiIwDQYJKoZIhvcNAQEBBQAD
      ggIPADCCAgoCggIBAN2y2zojYfl0bKfhp0AJBFeV+jQqbCw3sHmvEPwLmqDLqynI
      42tZXR5y914ZB9ZrwbL/K5O46exd/LujJnV2b3dzcx5rtiQzso0xzljqbnbQT20e
      ihx/WrF4OkZKydZzsdaJsWAPuplDH5P7J82q3re88jQdgE5hqjqFZ3clCG7lxoBw
      hLaazm3NJJlUfzdk97ouRvnFGAuXd5cQVx8jYOOeU60sWqmMe4QHdOvpqB91bJoY
      QSKVFjUgHeTpN8tNpKJfb9LIn3pun3bC9NKNHtRKMNX3Kl/sAPq7q/AlndvA2Kw3
      Dkum2mHQUGdzVHqcOgea9BGjLK2h7SuX93zTWL02u799dr6Xkrad/WShHchfjjRn
      aL35niJUDr02YJtPgxWObsrfOU63B8juLUphW/4BOjjJyAG5l9j1//aUGEi/sEe5
      lqVv0P78QrxoxR+MMXiJwQab5FB8TG/ac6mRHgF9CmkX90uaRh+OC07XjTdfSKGR
      PpM9hB2ZhLol/nf8qmoLdoD5HvODZuKu2+muKeVHXgw2/A6wM7OwrinxZiyBk5Hh
      CvaADH7PZpU6z/zv5NU5HSvXiKtCzFuDu4/Zfi34RfHXeCUfHAb4KfNRXJwMsxUa
      +4ZpSAX2G6RnGU5meuXpU5/V+DQJp/e69XyyY6RXDoMywaEFlIlXBqjRRA2pAgMB
      AAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgECMB0GA1Ud
      DgQWBBRDWUsraYuA4REzalfNVzjann3F6zAfBgNVHSMEGDAWgBRDWUsraYuA4REz
      alfNVzjann3F6zANBgkqhkiG9w0BAQ0FAAOCAgEAkQ+T9nqcSlAuW/90DeYmQOW1
      QhqOor5psBEGvxbNGV2hdLJY8h6QUq48BCevcMChg/L1CkznBNI40i3/6heDn3IS
      zVEwXKf34pPFCACWVMZxbQjkNRTiH8iRur9EsaNQ5oXCPJkhwg2+IFyoPAAYURoX
      VcI9SCDUa45clmYHJ/XYwV1icGVI8/9b2JUqklnOTa5tugwIUi5sTfipNcJXHhgz
      6BKYDl0/UP0lLKbsUETXeTGDiDpxZYIgbcFrRDDkHC6BSvdWVEiH5b9mH2BON60z
      0O0j8EEKTwi9jnafVtZQXP/D8yoVowdFDjXcKkOPF/1gIh9qrFR6GdoPVgB3SkLc
      5ulBqZaCHm563jsvWb/kXJnlFxW+1bsO9BDD6DweBcGdNurgmH625wBXksSdD7y/
      fakk8DagjbjKShYlPEFOAqEcliwjF45eabL0t27MJV61O/jHzHL3dknXeE4BDa2j
      bA+JbyJeUMtU7KMsxvx82RmhqBEJJDBCJ3scVptvhDMRrtqDBW5JShxoAOcpFQGm
      iYWicn46nPDjgTU0bX1ZPpTpryXbvciVL5RkVBuyX2ntcOLDPlZWgxZCBp96x07F
      AnOzKgZk4RzZPNAxCXERVxajn/FLcOhglVAKo5H0ac+AitlQ0ip55D2/mf8o72tM
      fVQ6VpyjEXdiIXWUq/o=
      -----END CERTIFICATE-----
      

      También puede descargar el certificado directamente desde Cloudflare aquí.

      Copie este certificado.

      A continuación, cree el archivo /etc/ssl/cloudflare.crt para guardar el certificado de Cloudflare:

      • sudo nano /etc/ssl/cloudflare.crt

      Añada el certificado al archivo. Guarde el archivo y cierre el editor.

      Ahora actualice su configuración Nginx para usar incorporaciones de cambios de origen autenticadas de TLS. Abra el archivo de configuración para su dominio:

      • sudo nano /etc/nginx/sites-available/your_domain

      Añada las directivas ssl_client_certificate y ssl_verify_client como se muestra en el siguiente ejemplo:

      /etc/nginx/sites-available/your_domain

      . . .
      
      server {
      
          # SSL configuration
      
          listen 443 ssl http2;
          listen [::]:443 ssl http2;
          ssl_certificate         /etc/ssl/cert.pem;
          ssl_certificate_key     /etc/ssl/key.pem;
          ssl_client_certificate /etc/ssl/cloudflare.crt;
          ssl_verify_client on;
      
          . . .
      

      Guarde el archivo y salga del editor.

      A continuación, pruebe Nginx para ver que no haya errores de sintaxis en su configuración Nginx:

      Si no se encontraron problemas, reinicie Nginx para habilitar sus cambios:

      • sudo systemctl restart nginx

      Por último, para habilitar incorporaciones de cambios autenticadas, abra la sección SSL/TLS en el panel de control de Cloudflare, vaya a la pestaña Servidor de origen y cambie la opción Incorporaciones de cambios de origen autenticadas.

      Habilite las incorporaciones de cambios de origen autenticadas

      Ahora visite su sitio web en https://your_domain para verificar que se haya configurado correctamente. Como antes, verá su página de inicio.

      Para verificar que su servidor solo aceptará las solicitudes firmadas por la CA de Cloudflare, cambie la opción Incorporaciones de cambios de origen autenticadas para deshabilitarlo y vuelva a cargar su sitio web. Debería obtener el siguiente mensaje de error:

      Mensaje de error

      Su servidor de origen crea un error si la CA de Cloudflare no firma una solicitud.

      Nota: La mayoría de los navegadores almacenarán solicitudes de caché, de forma que para ver el cambio anterior puede usar el modo de navegación de Incógnito/privado en su navegador. Para evitar que Cloudflare almacene las solicitudes de caché mientras configura su sitio web, vaya a Visión general en el panel de control de Cloudflare y cambie el modo de desarrollo.

      Ahora que sabe que funciona correctamente, vuelva a la sección SSL/TLS en el panel de control de Cloudflare, vaya a la pestaña Servidor de origen y cambie la opción Incorporaciones de cambios de origen autenticadas para habilitarlo.

      Conclusión

      En este tutorial, aseguró su sitio web con Nginx cifrando el tráfico entre Cloudflare y el servidor Nginx usando un certificado Origin CA de Cloudflare. A continuación, configuró las incorporaciones de cambios de origen autenticados en el servidor Nginx para asegurarse de que solo acepta solicitudes de los servidores de Cloudflare, evitando a cualquier otra persona conectarse directamente al servidor Nginx.



      Source link

      Hosten einer Website mit Cloudflare und Nginx unter Ubuntu 20.04


      Der Autor wählte die Electronic Frontier Foundation, um eine Spende im Rahmen des Programms Write for DOnations zu erhalten.

      Einführung

      Cloudflare ist ein Dienst, der sich zwischen dem Besucher und dem Server des Website-Eigentümers befindet und als Reverse-Proxy für Websites fungiert. Cloudflare bietet ein Content Delivery Network (CDN) sowie DDoS-Minderungs- und verteilte Domänennamen-Serverdienste.

      Nginx ist ein beliebter Webserver, der für das Hosting einiger der größten und am stärksten frequentierten Websites im Internet verantwortlich ist. Es ist üblich, dass Unternehmen Websites mit Nginx bereitstellen und Cloudflare als CDN- und DNS-Anbieter verwenden.

      In diesem Tutorial sichern Sie Ihre von Nginx bereitgestellte Website mit einem Origin CA-Zertifikat von Cloudflare und konfigurieren Nginx anschließend für die Verwendung authentifizierter Pull-Anforderungen. Die Verwendung dieses Setups bietet den Vorteil, dass Sie vom CDN und der schnellen DNS-Auflösung von Cloudflare profitieren und gleichzeitig sicherstellen, dass alle Verbindungen über Cloudflare erfolgen. Dadurch wird verhindert, dass böswillige Anforderungen Ihren Server erreichen.

      Voraussetzungen

      Bevor Sie mit diesem Tutorial beginnen, benötigen Sie Folgendes:

      Schritt 1 – Generieren eines Origin CA TLS-Zertifikats

      Mit der Cloudflare Origin-Zertifizierungsstelle können Sie ein kostenloses TLS-Zertifikat generieren, das von Cloudflare signiert wurde, um es auf Ihrem Nginx-Server zu installieren. Mit dem von Cloudflare generierten TLS-Zertifikat können Sie die Verbindung zwischen den Cloudflare-Servern und Ihrem Nginx-Server sichern.

      Um ein Zertifikat mit Origin CA zu generieren, melden Sie sich in einem Webbrowser bei Ihrem Cloudflare-Konto an. Wählen Sie die Domäne aus, die Sie sichern möchten, und navigieren Sie zum Abschnitt SSL/TLS Ihres Cloudflare-Dashboards. Navigieren Sie von dort zur Registerkarte Origin Server und klicken Sie auf die Schaltfläche Zertifikat erstellen:

      Erstellen einer Zertifikatoption im Cloudflare-Dashboard

      Lassen Sie die Standardoption Cloudflare einen privaten Schlüssel und einen CSR generieren lassen ausgewählt.

      Origin CA GUI-Optionen

      Klicken Sie auf Weiter und Sie sehen einen Dialog mit dem Origin Certificate und dem privaten Schlüssel. Sie müssen sowohl das Ursprungszertifikat als auch den privaten Schlüssel von Cloudflare auf Ihren Server übertragen. Aus Sicherheitsgründen werden die Informationen zum privaten Schlüssel nicht mehr angezeigt. Kopieren Sie den Schlüssel daher auf Ihren Server, bevor Sie auf OK klicken.

      Dialog, der das Ursprungszertifikat und den privaten Schlüssel anzeigt

      Sie verwenden das Verzeichnis /etc/ssl auf dem Server, um das Ursprungszertifikat und die privaten Schlüsseldateien zu speichern. Der Ordner existiert bereits auf dem Server.

      Kopieren Sie zunächst den Inhalt des Origin Certificate, das im Dialogfeld in Ihrem Browser angezeigt wird.

      Öffnen Sie dann auf Ihrem Server /etc/ssl/cert.pem in Ihrem bevorzugten Texteditor:

      • sudo nano /etc/ssl/cert.pem

      Fügen Sie den Zertifikatinhalt zur Datei hinzu. Speichern und schließen Sie den Editor danach.

      Kehren Sie dann zu Ihrem Browser zurück und kopieren Sie den Inhalt des privaten Schlüssels. Öffnen Sie die Datei /etc/ssl/key.pem zur Bearbeitung:

      • sudo nano /etc/ssl/key.pem

      Fügen Sie den privaten Schlüssel in die Datei ein, speichern Sie die Datei und beenden Sie den Editor.

      Hinweis: Wenn Sie das Zertifikat und den Schlüssel aus dem Cloudflare-Dashboard kopieren und in die entsprechenden Dateien auf dem Server einfügen, werden manchmal Leerzeilen eingefügt. Nginx behandelt solche Zertifikate und Schlüssel als ungültig. Stellen Sie also sicher, dass es keine leeren Zeilen in Ihren Dateien gibt.

      Warnung: Das Origin CA-Zertifikat von Cloudflare wird nur von Cloudflare als vertrauenswürdig eingestuft und sollte daher nur von Ursprungsservern verwendet werden, die aktiv mit Cloudflare verbunden sind. Wenn Sie Cloudflare zu irgendeinem Zeitpunkt anhalten oder deaktivieren, wird in Ihrem Origin CA-Zertifikat ein nicht vertrauenswürdiger Zertifikatfehler ausgegeben.

      Nachdem Sie die Schlüssel- und Zertifikatdateien auf Ihren Server kopiert haben, müssen Sie die Nginx-Konfiguration aktualisieren, um sie verwenden zu können.

      Schritt 2 – Installieren des Origin CA-Zertifikats in Nginx

      Im vorherigen Abschnitt haben Sie mithilfe des Cloudflare-Dashboards ein Ursprungszertifikat und einen privaten Schlüssel generiert und die Dateien auf Ihrem Server gespeichert. Jetzt aktualisieren Sie die Nginx-Konfiguration für Ihre Website, um mithilfe des Ursprungszertifikats und des privaten Schlüssels die Verbindung zwischen den Cloudflare-Servern und Ihrem Server zu sichern.

      Stellen Sie zunächst sicher, dass UFW HTTPS-Datenverkehr zulässt. Aktivieren Sie Nginx Full, wodurch sowohl Port 80 (HTTP) als auch Port 443 (HTTPS) geöffnet werden:

      • sudo ufw allow 'Nginx Full'

      Laden Sie nun UFW neu:

      Überprüfen Sie abschließend, ob Ihre neuen Regeln erlaubt sind und ob UFW aktiv ist:

      Sie werden eine Ausgabe wie diese sehen:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)

      Jetzt können Sie Ihren Nginx-Serverblock anpassen. Nginx erstellt während der Installation einen Standard-Serverblock. Entfernen Sie ihn, wenn er noch vorhanden ist, da Sie bereits einen benutzerdefinierten Serverblock für Ihre Domäne konfiguriert haben:

      • sudo rm /etc/nginx/sites-enabled/default

      Öffnen Sie als Nächstes die Nginx-Konfigurationsdatei für Ihre Domäne:

      • sudo nano /etc/nginx/sites-available/your_domain

      Die Datei sollte so aussehen:

      /etc/nginx/sites-available/your_domain

      server {
              listen 80;
              listen [::]:80;
      
              root /var/www/your_domain/html;
              index index.html index.htm index.nginx-debian.html;
      
              server_name your_domain www.your_domain;
      
              location / {
                      try_files $uri $uri/ =404;
              }
      }
      
      

      Wir ändern die Nginx-Konfigurationsdatei, um Folgendes zu tun:

      • Hören Sie auf Port 80 und leiten Sie alle Anfragen um, um https zu verwenden.
      • Hören Sie auf Port 443 und verwenden Sie das im vorherigen Abschnitt hinzugefügte Ursprungszertifikat und den privaten Schlüssel.

      Ändern Sie die Datei, damit sie wie folgt aussieht:

      /etc/nginx/sites-available/your_domain

      server {
          listen 80;
          listen [::]:80;
          server_name your_domain www.your_domain;
          return 302 https://$server_name$request_uri;
      }
      
      server {
      
          # SSL configuration
      
          listen 443 ssl http2;
          listen [::]:443 ssl http2;
          ssl        on;
          ssl_certificate         /etc/ssl/cert.pem;
          ssl_certificate_key     /etc/ssl/key.pem;
      
          server_name your_domain www.your_domain;
      
          root /var/www/your_domain/html;
          index index.html index.htm index.nginx-debian.html;
      
      
          location / {
                  try_files $uri $uri/ =404;
          }
      }
      

      Speichern Sie die Datei und beenden Sie den Editor.

      Als Nächstes testen Sie, um sicherzustellen, dass es in keiner Ihrer Nginx-Konfigurationsdateien Syntaxfehler gibt:

      Wenn keine Probleme gefunden wurden, starten Sie Nginx neu, um Ihre Änderungen zu aktivieren:

      • sudo systemctl restart nginx

      Wechseln Sie nun zum Abschnitt SSL/TLS des Cloudflare-Dashboards, navigieren Sie zur Registerkarte Übersicht und ändern Sie den SSL/TLS-Verschlüsselungsmodus in Voll (streng). Dadurch wird Cloudflare informiert, die Verbindung zwischen Cloudflare und Ihrem ursprünglichen Nginx-Server immer zu verschlüsseln.

      Aktivieren des vollen (strengen) SSL-Modus im Cloudflare-Dashboard

      Besuchen Sie nun Ihre Website unter https://your_domain, um zu überprüfen, ob sie richtig eingerichtet ist. Sie sehen Ihre Startseite angezeigt und der Browser wird melden, dass die Website sicher ist.

      Im nächsten Abschnitt richten Sie Authenticated Origin Pulls ein, um zu überprüfen, ob Ihr Ursprungsserver tatsächlich mit Cloudflare und nicht einem anderen Server spricht. Auf diese Weise wird Nginx so konfiguriert, dass nur Anforderungen akzeptiert werden, die ein gültiges Client-Zertifikat von Cloudflare verwenden. Alle Anforderungen, die Cloudflare nicht durchlaufen haben, werden gelöscht.

      Schritt 3 — Einrichten von Authenticated Origin Pulls

      Mithilfe des Origin CA-Zertifikats kann Cloudflare überprüfen, ob es mit dem richtigen Origin-Server kommuniziert. In diesem Schritt wird mithilfe der TLS-Client-Authentifizierung überprüft, ob Ihr ursprünglicher Nginx-Server mit Cloudflare kommuniziert.

      Bei einem vom Client authentifizierten TLS-Handshake stellen beide Seiten ein zu überprüfendes Zertifikat bereit. Der Ursprungsserver ist so konfiguriert, dass nur Anfragen akzeptiert werden, die ein gültiges Client-Zertifikat von Cloudflare verwenden. Anforderungen, die Cloudflare nicht durchlaufen haben, werden abgegeben, da sie nicht über ein Cloudflare-Zertifikat verfügen. Dies bedeutet, dass Angreifer die Sicherheitsmaßnahmen von Cloudflare nicht umgehen und keine direkte Verbindung zu Ihrem Nginx-Server herstellen können.

      Cloudflare präsentiert Zertifikate, die von einer CA mit dem folgenden Zertifikat signiert werden:

      -----BEGIN CERTIFICATE-----
      MIIGCjCCA/KgAwIBAgIIV5G6lVbCLmEwDQYJKoZIhvcNAQENBQAwgZAxCzAJBgNV
      BAYTAlVTMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMRQwEgYDVQQLEwtPcmln
      aW4gUHVsbDEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UECBMKQ2FsaWZv
      cm5pYTEjMCEGA1UEAxMab3JpZ2luLXB1bGwuY2xvdWRmbGFyZS5uZXQwHhcNMTkx
      MDEwMTg0NTAwWhcNMjkxMTAxMTcwMDAwWjCBkDELMAkGA1UEBhMCVVMxGTAXBgNV
      BAoTEENsb3VkRmxhcmUsIEluYy4xFDASBgNVBAsTC09yaWdpbiBQdWxsMRYwFAYD
      VQQHEw1TYW4gRnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMSMwIQYDVQQD
      ExpvcmlnaW4tcHVsbC5jbG91ZGZsYXJlLm5ldDCCAiIwDQYJKoZIhvcNAQEBBQAD
      ggIPADCCAgoCggIBAN2y2zojYfl0bKfhp0AJBFeV+jQqbCw3sHmvEPwLmqDLqynI
      42tZXR5y914ZB9ZrwbL/K5O46exd/LujJnV2b3dzcx5rtiQzso0xzljqbnbQT20e
      ihx/WrF4OkZKydZzsdaJsWAPuplDH5P7J82q3re88jQdgE5hqjqFZ3clCG7lxoBw
      hLaazm3NJJlUfzdk97ouRvnFGAuXd5cQVx8jYOOeU60sWqmMe4QHdOvpqB91bJoY
      QSKVFjUgHeTpN8tNpKJfb9LIn3pun3bC9NKNHtRKMNX3Kl/sAPq7q/AlndvA2Kw3
      Dkum2mHQUGdzVHqcOgea9BGjLK2h7SuX93zTWL02u799dr6Xkrad/WShHchfjjRn
      aL35niJUDr02YJtPgxWObsrfOU63B8juLUphW/4BOjjJyAG5l9j1//aUGEi/sEe5
      lqVv0P78QrxoxR+MMXiJwQab5FB8TG/ac6mRHgF9CmkX90uaRh+OC07XjTdfSKGR
      PpM9hB2ZhLol/nf8qmoLdoD5HvODZuKu2+muKeVHXgw2/A6wM7OwrinxZiyBk5Hh
      CvaADH7PZpU6z/zv5NU5HSvXiKtCzFuDu4/Zfi34RfHXeCUfHAb4KfNRXJwMsxUa
      +4ZpSAX2G6RnGU5meuXpU5/V+DQJp/e69XyyY6RXDoMywaEFlIlXBqjRRA2pAgMB
      AAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgECMB0GA1Ud
      DgQWBBRDWUsraYuA4REzalfNVzjann3F6zAfBgNVHSMEGDAWgBRDWUsraYuA4REz
      alfNVzjann3F6zANBgkqhkiG9w0BAQ0FAAOCAgEAkQ+T9nqcSlAuW/90DeYmQOW1
      QhqOor5psBEGvxbNGV2hdLJY8h6QUq48BCevcMChg/L1CkznBNI40i3/6heDn3IS
      zVEwXKf34pPFCACWVMZxbQjkNRTiH8iRur9EsaNQ5oXCPJkhwg2+IFyoPAAYURoX
      VcI9SCDUa45clmYHJ/XYwV1icGVI8/9b2JUqklnOTa5tugwIUi5sTfipNcJXHhgz
      6BKYDl0/UP0lLKbsUETXeTGDiDpxZYIgbcFrRDDkHC6BSvdWVEiH5b9mH2BON60z
      0O0j8EEKTwi9jnafVtZQXP/D8yoVowdFDjXcKkOPF/1gIh9qrFR6GdoPVgB3SkLc
      5ulBqZaCHm563jsvWb/kXJnlFxW+1bsO9BDD6DweBcGdNurgmH625wBXksSdD7y/
      fakk8DagjbjKShYlPEFOAqEcliwjF45eabL0t27MJV61O/jHzHL3dknXeE4BDa2j
      bA+JbyJeUMtU7KMsxvx82RmhqBEJJDBCJ3scVptvhDMRrtqDBW5JShxoAOcpFQGm
      iYWicn46nPDjgTU0bX1ZPpTpryXbvciVL5RkVBuyX2ntcOLDPlZWgxZCBp96x07F
      AnOzKgZk4RzZPNAxCXERVxajn/FLcOhglVAKo5H0ac+AitlQ0ip55D2/mf8o72tM
      fVQ6VpyjEXdiIXWUq/o=
      -----END CERTIFICATE-----
      

      Außerdem können Sie das Zertifikat direkt hier von Cloudflare herunterladen.

      Kopieren Sie dieses Zertifikat.

      Erstellen Sie dann die Datei /etc/ssl/cloudflare.crt, um das Zertifikat von Cloudflare zu speichern:

      • sudo nano /etc/ssl/cloudflare.crt

      Fügen Sie das Zertifikat der Datei hinzu. Speichern Sie anschließend die Datei und beenden Sie den Editor.

      Aktualisieren Sie jetzt Ihre Nginx-Konfiguration, um TLS Authenticated Origin Pulls zu verwenden. Öffnen Sie die Konfigurationsdatei für Ihre Domäne:

      • sudo nano /etc/nginx/sites-available/your_domain

      Fügen Sie die Direktiven ssl_client_certificate und ssl_verify_client ein, wie im folgenden Beispiel dargestellt:

      /etc/nginx/sites-available/your_domain

      . . .
      
      server {
      
          # SSL configuration
      
          listen 443 ssl http2;
          listen [::]:443 ssl http2;
          ssl        on;
          ssl_certificate         /etc/ssl/cert.pem;
          ssl_certificate_key     /etc/ssl/key.pem;
          ssl_client_certificate /etc/ssl/cloudflare.crt;
          ssl_verify_client on;
      
          . . .
      

      Speichern Sie die Datei und beenden Sie den Editor.

      Testen Sie als Nächstes, um sicherzustellen, dass in Ihrer Nginx-Konfiguration keine Syntaxfehler vorhanden sind:

      Wenn keine Probleme gefunden wurden, starten Sie Nginx neu, um Ihre Änderungen zu aktivieren:

      • sudo systemctl restart nginx

      Öffnen Sie schließlich den Abschnitt SSL/TLS im Cloudflare-Dashboard, navigieren Sie zur Registerkarte Origin Server und aktivieren Sie die Option Authenticated Origin Pulls .

      Authenticated Origin Pulls aktivieren

      Besuchen Sie nun Ihre Website unter https://your_domain, um zu überprüfen, dass sie richtig eingerichtet wurde. Wie zuvor sehen Sie Ihre Startseite angezeigt.

      Um zu überprüfen, ob Ihr Server nur von der CA von Cloudflare signierte Anforderungen akzeptiert, aktivieren Sie die Option Authenticated Origin Pulls, um sie zu deaktivieren, und laden Sie dann Ihre Website neu. Sie sollten folgende Fehlermeldung erhalten:

      Fehlermeldung

      Ihr Ursprungsserver gibt einen Fehler aus, wenn eine Anforderung nicht von der CA von Cloudflare signiert ist.

      Hinweis: Die meisten Browser werden Anfragen zwischenspeichern. Um die obige Änderung zu sehen, können Sie Incognito/Private Browsing-Modus in Ihrem Browser verwenden. Um zu verhindern, dass Cloudflare Anforderungen zwischenspeichert, während Sie Ihre Website einrichten, navigieren Sie im Cloudflare-Dashboard zu Übersicht und schalten Sie den Entwicklungsmodus um.

      Nachdem Sie jetzt wissen, dass es ordnungsgemäß funktioniert, kehren Sie zum Abschnitt SSL/TLS im Cloudflare-Dashboard zurück, navigieren Sie zur Registerkarte Origin Server und schalten Sie die Option Authenticated Origin Pulls erneut um, um sie zu aktivieren.

      Zusammenfassung

      In diesem Tutorial haben Sie Ihre Nginx-basierte Website durch Verschlüsselung des Datenverkehrs zwischen Cloudflare und dem Nginx-Server mithilfe eines Origin CA-Zertifikats von Cloudflare gesichert. Anschließend haben Sie Authenticated Origin Pulls auf dem Nginx-Server eingerichtet, um sicherzustellen, dass nur die Anforderungen der Cloudflare-Server akzeptiert werden, sodass andere Personen keine direkte Verbindung zum Nginx-Server herstellen können.



      Source link