One place for hosting & domains

      Encrypt

      Обеспечение безопасности Apache с помощью Let’s Encrypt в Ubuntu 20.04


      Введение

      Let’s Encrypt — это центр сертификации, упрощающий получение и установку бесплатных сертификатов TLS/SSL, обеспечивая шифрование HTTPS на веб-серверах. Это упрощает процесс посредством предоставления программного клиента Certbot, который пытается автоматизировать большинство необходимых шагов (или все шаги). В настоящее время весь процесс получения и установки сертификата полностью автоматизирован — как в Apache, так и Nginx.

      В этом руководстве мы будем использовать Certbot для получения бесплатного сертификата SSL для Apache в Ubuntu 20.04, и убедимся, что сертификат настроен на автоматическое обновление.

      В этом обучающем руководстве используется отдельный файл виртуального хоста вместо файла конфигурации Apache по умолчанию — для настройки веб-сайта, который будет защищен Let’s Encrypt. Рекомендуется создавать новые файлы виртуального хоста Apache для каждого домена, размещенного на сервере, т. к. это позволяет избежать распространенных ошибок, и при этом поддерживаются файлы конфигурации по умолчанию в качестве резервной настройки.

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

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

      • Один сервер Ubuntu 20.04, настроенный в соответствии с обучающим руководством Начальная настройка сервера Ubuntu 20.04, включая пользователя без прав root с привилегиями sudo и брандмауэр.

      • Зарегистрированное полное доменное имя. Во всем обучающем руководстве мы будем использовать your_domain в качестве примера. Вы можете купить доменное имя на Namecheap, получить его бесплатно на Freenom или воспользоваться услугами любого предпочитаемого регистратора доменных имен.

      • На вашем сервере должны быть настроены обе нижеследующие записи DNS. В руководстве Введение в DigitalOcean DNS содержится подробная информация по их добавлению.

        • Запись A, где your_domain указывает на публичный IP-адрес вашего сервера.
        • Запись A, где www.your_domain указывает на публичный IP-адрес вашего сервера.
      • Apache, установленный в соответствии с указаниями руководства Установка Apache в Ubuntu 20.04. Убедитесь, что у вас имеется файл виртуального хоста для вашего домена. В этом обучающем руководстве мы будем использовать /etc/apache2/sites-available/your_domain.conf в качестве примера.

      Шаг 1 — Установка Certbot

      Для получения сертификата SSL с помощью Let’s Encrypt нам сначала необходимо установить программное обеспечение Certbot на вашем сервере. Для этого мы будем использовать репозитории пакетов Ubuntu по умолчанию.

      Нам нужны два пакета: certbot и python3-certbot-apache. Последний — плагин, который интегрирует Certbot с Apache, позволяя автоматизировать получение сертификата и настройку HTTPS на веб-сервере с помощью одной команды.

      • sudo apt install certbot python3-certbot-apache

      Чтобы подтвердить установку, нажмите Y, а затем ENTER.

      Теперь Certbot установлен на сервере. На следующем шаге мы будем проверять конфигурацию Apache, чтобы убедиться, что ваш виртуальный хост настроен корректно. Благодаря этому пользовательский скрипт certbot сможет выявлять ваши домены и изменять настройку вашего веб-сервера для автоматического использования нового сертификата SSL.

      Шаг 2 — Проверка конфигурации виртуального хоста Apache

      Чтобы автоматически получить и настроить SSL для вашего веб-сервера, Certbot должен найти корректный виртуальный хост в ваших файлах конфигурации Apache. Имена доменов ваших серверов будут получены из директив ServerName и ServerAlias, определенных в блоке конфигурации VirtualHost.

      Если вы выполнили шаг по настройке виртуального хоста из руководства по установке Apache, то у вас уже должен быть настроен блок VirtualHost для вашего домена в /etc/apache2/sites-available/your_domain.conf​​​​​​ с ServerName, а также правильно заданные директивы ServerAlias.

      Чтобы проверить это, откройте для вашего домена файл виртуального хоста с помощью nano или предпочитаемого текстового редактора:

      • sudo nano /etc/apache2/sites-available/your_domain.conf

      Найдите существующие строки ServerName и ServerAlias. Они должны выглядеть следующим образом:

      /etc/apache2/sites-available/your_domain.conf

      ...
      ServerName your_domain
      ServerAlias www.your_domain
      ...
      

      Если вы уже настроили параметры ServerName и ServerAlias, то можете выйти из текстового редактора и переходить к следующему шагу. Если вы используете nano, то можете выйти, введя CTRL+X, а затем Y и ENTER для подтверждения.

      Если конфигурация вашего виртуального хоста не соответствует данному примеру, обновите ее соответствующим образом. После завершения сохраните файл и закройте редактор. Затем запустите следующую команду для подтверждения сделанных изменений:

      • sudo apache2ctl configtest

      Должен быть получен ответ Syntax OK. Если появится сообщение об ошибке, повторно откройте файл виртуального хоста и проверьте, нет ли опечаток или отсутствующих символов. Когда синтаксис файла конфигурации станет корректным, перезагрузите Apache, чтобы изменения вступили в силу:

      • sudo systemctl reload apache2

      С этими изменениями Certbot сможет найти корректный блок VirtualHost и обновить его.

      Далее мы обновим брандмауэр, чтобы разрешить трафик HTTPS.

      Шаг 3 — Доступ к HTTPS через брандмауэр

      Если у вас включен брандмауэр UFW в соответствии с предварительными требованиями, то вам потребуется изменить настройки для поддержки трафика HTTPS. После установки Apache зарегистрирует несколько разных профилей приложений UFW. Мы можем использовать профиль Apache Full, чтобы разрешить трафик HTTP и HTTPS на сервере.

      Чтобы узнать, какой трафик разрешен на сервере, можно использовать следующую команду:

      Если вы следовали указаниям в одном из наших руководств по установке Apache, то результат должен выглядеть примерно следующим образом, т.е. сейчас должен быть разрешен только трафик HTTP через порт 80:

      Output

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

      Чтобы дополнительно активировать трафик HTTPS, разрешите профиль Apache Full и удалите лишний профиль Apache:

      • sudo ufw allow 'Apache Full'
      • sudo ufw delete allow 'Apache'

      Теперь ваш статус будет выглядеть следующим образом:

      Output

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

      Теперь вы готовы запустить Certbot и получить сертификаты.

      Шаг 4 — Получение сертификата SSL

      Certbot предоставляет широкий выбор способов получения сертификатов SSL с помощью плагинов: Плагин Apache изменит конфигурацию Apache и перезагрузит ее, когда это потребуется. Для использования этого плагина введите следующую команду:

      Этот скрипт предложит вам ответить на ряд вопросов, чтобы настроить сертификат SSL. Сначала он запросит действующий адрес электронной почты. Это письмо будет использоваться для уведомлений о продлении и безопасности:

      Output

      Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): you@your_domain

      После предоставления действующего адреса электронной почты нажмите ENTER, чтобы перейти к следующему шагу. Затем вам будет предложено подтвердить согласие с условиями обслуживания Let’s Encrypt. Вы можете подтвердить это, нажав A, а затем ENTER:

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Please read the Terms of Service at
      https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
      agree in order to register with the ACME server at
      https://acme-v02.api.letsencrypt.org/directory
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      (A)gree/(C)ancel: A
      

      Далее вам будет предложено предоставить организации Electronic Frontier Foundation свой адрес электронной почты, чтобы получать новости и иную информацию. Если не хотите подписываться на их рассылку, то введите N. Если хотите — введите Y. Затем нажмите ENTER, чтобы перейти к следующему шагу.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Would you be willing to share your email address with the Electronic Frontier
      Foundation, a founding partner of the Let's Encrypt project and the non-profit
      organization that develops Certbot? We'd like to send you email about our work
      encrypting the web, EFF news, campaigns, and ways to support digital freedom.
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      (Y)es/(N)o: N
      

      На следующем шаге вам будет предложено сообщить Certbot, для каких доменов вы хотите активировать HTTPS. Указанные имена доменов автоматически получены из конфигурации вашего виртуального хоста Apache, поэтому важно убедиться, что настройки ServerName и ServerAlias вашего виртуального хоста правильные. Если хотите активировать HTTPS для всех указанных доменных имен (рекомендуется), то можно оставить командную строку пустой и нажать ENTER, чтобы продолжить. В противном случае выберите домены, для которых вы хотите активировать HTTPS, указав все подходящие номера через запятую и/или пробелы, и нажмите ENTER.

      Which names would you like to activate HTTPS for?
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      1: your_domain
      2: www.your_domain
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Select the appropriate numbers separated by commas and/or spaces, or leave input
      blank to select all options shown (Enter 'c' to cancel):
      

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

      Obtaining a new certificate
      Performing the following challenges:
      http-01 challenge for your_domain
      http-01 challenge for www.your_domain
      Enabled Apache rewrite module
      Waiting for verification...
      Cleaning up challenges
      Created an SSL vhost at /etc/apache2/sites-available/your_domain-le-ssl.conf
      Enabled Apache socache_shmcb module
      Enabled Apache ssl module
      Deploying Certificate to VirtualHost /etc/apache2/sites-available/your_domain-le-ssl.conf
      Enabling available site: /etc/apache2/sites-available/your_domain-le-ssl.conf
      Deploying Certificate to VirtualHost /etc/apache2/sites-available/your_domain-le-ssl.conf
      

      Далее вам будет предложено выбрать, перенаправлять трафик HTTP на HTTPS или нет. На практике это означает, что те, кто посещает ваш веб-сайт через незашифрованные каналы (HTTP), будут автоматически перенаправляться на адрес HTTPS вашего веб-сайта. Выберите 2, чтобы активировать перенаправление, или 1, если хотите сохранить и HTTP, и HTTPS в качестве отдельных методов доступа к вашему веб-сайту.

      Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      1: No redirect - Make no further changes to the webserver configuration.
      2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
      new sites, or if you're confident your site works on HTTPS. You can undo this
      change by editing your web server's configuration.
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
      
      

      После этого шага конфигурация Certbot будет завершена, и вам будут предоставлены последние замечания о новом сертификате, о том, где находятся полученные файлы, и о том, как протестировать вашу конфигурацию при помощи внешнего инструмента, который анализирует подлинность вашего сертификата:

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Congratulations! You have successfully enabled https://your_domain and
      https://www.your_domain
      
      You should test your configuration at:
      https://www.ssllabs.com/ssltest/analyze.html?d=your_domain
      https://www.ssllabs.com/ssltest/analyze.html?d=www.your_domain
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      
      IMPORTANT NOTES:
       - Congratulations! Your certificate and chain have been saved at:
         /etc/letsencrypt/live/your_domain/fullchain.pem
         Your key file has been saved at:
         /etc/letsencrypt/live/your_domain/privkey.pem
         Your cert will expire on 2020-07-27. To obtain a new or tweaked
         version of this certificate in the future, simply run certbot again
         with the "certonly" option. To non-interactively renew *all* of
         your certificates, run "certbot renew"
       - Your account credentials have been saved in your Certbot
         configuration directory at /etc/letsencrypt. You should make a
         secure backup of this folder now. This configuration directory will
         also contain certificates and private keys obtained by Certbot so
         making regular backups of this folder is ideal.
       - If you like Certbot, please consider supporting our work by:
      
         Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
         Donating to EFF:                    https://eff.org/donate-le
      
      

      Теперь ваш сертификат установлен и загружен в конфигурацию Apache. Попробуйте перезагрузить веб-сайт с помощью https://, и посмотрите на индикатор безопасности в браузере. Он должен указывать, что ваш веб-сайт защищен надлежащим образом — как правило, на это указывает значок замка в адресной строке.

      Вы можете использовать SSL Labs Server Test для проверки класса вашего сертификата и получения подробной информации о нем с точки зрения внешней службы.

      На следующем (последнем) шаге мы протестируем функцию автоматического обновления Certbot, гарантирующую автоматическое обновление вашего сертификата до даты окончания его действия.

      Шаг 5 — Проверка автоматического обновления Certbot

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

      Пакет certbot, который мы установили, обеспечивает обновление приложений посредством добавления скрипта обновления в /etc/cron.d — им управляет служба systemctl, которая называется certbot.timer. Этот скрипт запускается дважды в день и автоматически обновляет любой сертификат, до истечения срока которого осталось менее 30 дней.

      Чтобы проверить статус этой службы и убедиться, что она активна и запущена, можно использовать следующую команду:

      • sudo systemctl status certbot.timer

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

      Output

      ● certbot.timer - Run certbot twice daily Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled) Active: active (waiting) since Tue 2020-04-28 17:57:48 UTC; 17h ago Trigger: Wed 2020-04-29 23:50:31 UTC; 12h left Triggers: ● certbot.service Apr 28 17:57:48 fine-turtle systemd[1]: Started Run certbot twice daily.

      Чтобы протестировать процесс обновления, можно сделать запуск «вхолостую» с помощью certbot:

      • sudo certbot renew --dry-run

      Если ошибок нет, то все в порядке. При необходимости Certbot обновит ваши сертификаты и перезагрузит Apache для получения изменений. Если процесс автоматического обновления когда-нибудь не выполнится, то Let’s Encrypt отправит сообщение на указанный вами адрес электронной почты с предупреждением о том, что срок действия сертификата подходит к концу.

      Заключение

      В этом обучающем руководстве вы установили клиент Let’s Encrypt certbot, настроили и установили сертификат SSL для своего домена и подтвердили, что служба автоматического обновления Certbot активна в systemctl. Если возникнут дополнительные вопросы об использовании Certbot, то лучше всего начинать искать ответы в их документации.



      Source link

      How To Secure Nginx with Let’s Encrypt on Ubuntu 20.04


      Not using Ubuntu 20.04?


      Choose a different version or distribution.

      Introduction

      Let’s Encrypt is a Certificate Authority (CA) that provides an easy way to obtain and install free TLS/SSL certificates, thereby enabling encrypted HTTPS on web servers. It simplifies the process by providing a software client, Certbot, that attempts to automate most (if not all) of the required steps. Currently, the entire process of obtaining and installing a certificate is fully automated on both Apache and Nginx.

      In this tutorial, you will use Certbot to obtain a free SSL certificate for Nginx on Ubuntu 20.04 and set up your certificate to renew automatically.

      This tutorial will use a separate Nginx server configuration file instead of the default file. We recommend creating new Nginx server block files for each domain because it helps to avoid common mistakes and maintains the default files as a fallback configuration.

      Prerequisites

      To follow this tutorial, you will need:

      • One Ubuntu 20.04 server set up by following this initial server setup for Ubuntu 20.04 tutorial, including a sudo-enabled non-root user and a firewall.

      • A registered domain name. This tutorial will use example.com throughout. You can purchase a domain name from Namecheap, get one for free with Freenom, or use the domain registrar of your choice.

      • Both of the following DNS records set up for your server. If you are using DigitalOcean, please see our DNS documentation for details on how to add them.

        • An A record with example.com pointing to your server’s public IP address.
        • An A record with www.example.com pointing to your server’s public IP address.
      • Nginx installed by following How To Install Nginx on Ubuntu 20.04. Be sure that you have a server block for your domain. This tutorial will use /etc/nginx/sites-available/example.com as an example.

      Step 1 — Installing Certbot

      The first step to using Let’s Encrypt to obtain an SSL certificate is to install the Certbot software on your server.

      Install Certbot and it’s Nginx plugin with apt:

      • sudo apt install certbot python3-certbot-nginx

      Certbot is now ready to use, but in order for it to automatically configure SSL for Nginx, we need to verify some of Nginx’s configuration.

      Step 2 — Confirming Nginx’s Configuration

      Certbot needs to be able to find the correct server block in your Nginx configuration for it to be able to automatically configure SSL. Specifically, it does this by looking for a server_name directive that matches the domain you request a certificate for.

      If you followed the server block set up step in the Nginx installation tutorial, you should have a server block for your domain at /etc/nginx/sites-available/example.com with the server_name directive already set appropriately.

      To check, open the configuration file for your domain using nano or your favorite text editor:

      • sudo nano /etc/nginx/sites-available/example.com

      Find the existing server_name line. It should look like this:

      /etc/nginx/sites-available/example.com

      ...
      server_name example.com www.example.com;
      ...
      

      If it does, exit your editor and move on to the next step.

      If it doesn’t, update it to match. Then save the file, quit your editor, and verify the syntax of your configuration edits:

      If you get an error, reopen the server block file and check for any typos or missing characters. Once your configuration file’s syntax is correct, reload Nginx to load the new configuration:

      • sudo systemctl reload nginx

      Certbot can now find the correct server block and update it automatically.

      Next, let’s update the firewall to allow HTTPS traffic.

      Step 3 — Allowing HTTPS Through the Firewall

      If you have the ufw firewall enabled, as recommended by the prerequisite guides, you’ll need to adjust the settings to allow for HTTPS traffic. Luckily, Nginx registers a few profiles with ufw upon installation.

      You can see the current setting by typing:

      It will probably look like this, meaning that only HTTP traffic is allowed to the web server:

      Output

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

      To additionally let in HTTPS traffic, allow the Nginx Full profile and delete the redundant Nginx HTTP profile allowance:

      • sudo ufw allow 'Nginx Full'
      • sudo ufw delete allow 'Nginx HTTP'

      Your status should now look like this:

      Output

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

      Next, let’s run Certbot and fetch our certificates.

      Step 4 — Obtaining an SSL Certificate

      Certbot provides a variety of ways to obtain SSL certificates through plugins. The Nginx plugin will take care of reconfiguring Nginx and reloading the config whenever necessary. To use this plugin, type the following:

      • sudo certbot --nginx -d example.com -d www.example.com

      This runs certbot with the --nginx plugin, using -d to specify the domain names we’d like the certificate to be valid for.

      If this is your first time running certbot, you will be prompted to enter an email address and agree to the terms of service. After doing so, certbot will communicate with the Let’s Encrypt server, then run a challenge to verify that you control the domain you’re requesting a certificate for.

      If that’s successful, certbot will ask how you’d like to configure your HTTPS settings.

      Output

      Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

      Select your choice then hit ENTER. The configuration will be updated, and Nginx will reload to pick up the new settings. certbot will wrap up with a message telling you the process was successful and where your certificates are stored:

      Output

      IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2020-08-18. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

      Your certificates are downloaded, installed, and loaded. Try reloading your website using https:// and notice your browser’s security indicator. It should indicate that the site is properly secured, usually with a lock icon. If you test your server using the SSL Labs Server Test, it will get an A grade.

      Let’s finish by testing the renewal process.

      Step 5 — Verifying Certbot Auto-Renewal

      Let’s Encrypt’s certificates are only valid for ninety days. This is to encourage users to automate their certificate renewal process. The certbot package we installed takes care of this for us by adding a systemd timer that will run twice a day and automatically renew any certificate that’s within thirty days of expiration.

      You can query the status of the timer with systemctl:

      • sudo systemctl status certbot.timer

      Output

      ● certbot.timer - Run certbot twice daily Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled) Active: active (waiting) since Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left Triggers: ● certbot.service

      To test the renewal process, you can do a dry run with certbot:

      • sudo certbot renew --dry-run

      If you see no errors, you’re all set. When necessary, Certbot will renew your certificates and reload Nginx to pick up the changes. If the automated renewal process ever fails, Let’s Encrypt will send a message to the email you specified, warning you when your certificate is about to expire.

      Conclusion

      In this tutorial, you installed the Let’s Encrypt client certbot, downloaded SSL certificates for your domain, configured Nginx to use these certificates, and set up automatic certificate renewal. If you have further questions about using Certbot, the official documentation is a good place to start.



      Source link

      Comment sécuriser Apache avec Let’s Encrypt sur Ubuntu 20.04


      Introduction

      Let’s Encrypt est une autorité de certification (CA) qui facilite l’obtention et l’installation de certificats TLS/SSL gratuits, permettant ainsi le cryptage HTTPS sur les serveurs web. Il simplifie le processus en fournissant un logiciel client, Certbot, qui tente d’automatiser la plupart (sinon la totalité) des étapes requises. Actuellement, l’ensemble du processus d’obtention et d’installation d’un certificat est entièrement automatisé sur Apache et Nginx.

      Dans ce guide, nous utiliserons Certbot pour obtenir un certificat SSL gratuit pour Apache sur Ubuntu 20.04, et nous nous assurerons que ce certificat est configuré pour se renouveler automatiquement.

      Ce tutoriel utilise un fichier d’hôte virtuel séparé au lieu du fichier de configuration par défaut d’Apache pour configurer le site web qui sera sécurisé par Let’s Encrypt. Nous recommandons de créer de nouveaux fichiers d’hôtes virtuels Apache pour chaque domaine hébergé dans un serveur, car cela permet d’éviter les erreurs courantes et de conserver les fichiers de configuration par défaut comme configuration de repli.

      Conditions préalables

      Pour suivre ce tutoriel, vous aurez besoin de :

      • Un serveur Ubuntu 20.04 configuré en suivant cette configuration initiale du serveur pour le tutoriel Ubuntu 20.04, comprenant un utilisateur sudo non root et un pare-feu.

      • Un nom de domaine entièrement enregistré. Ce tutoriel utilisera your_domain comme exemple tout du long. Vous pouvez acheter un nom de domaine sur Namecheap, en obtenir un gratuitement sur Freenom, ou utiliser le bureau d’enregistrement de domaine de votre choix.

      • Les deux enregistrements DNS suivants ont été configurés pour votre serveur. Vous pouvez suivre cette introduction à DigitalOcean DNS pour savoir comment les ajouter.

        • Un enregistrement A avec your_domain pointant sur l’adresse IP publique de votre serveur.
        • Un enregistrement A avec www.your_domain​​​​​​ pointant à l’adresse IP publique de votre serveur.
      • Apache installé en suivant le guide Comment installer Apache sur Ubuntu 20.04. Assurez-vous que vous disposez d’un fichier d’hôte virtuel pour votre domaine. Ce tutoriel utilisera /etc/apache2/sites-available/your_domain.conf comme exemple.

      Étape 1 — Installation de Certbot

      Pour obtenir un certificat SSL avec Let’s Encrypt, nous devons d’abord installer le logiciel Certbot sur votre serveur. Nous utiliserons pour cela les dépôts de packages Ubuntu par défaut.

      Nous avons besoin de deux packages : certbot, et python3-certbot-apache. Ce dernier est un plugin qui intègre Certbot à Apache, permettant d’automatiser l’obtention d’un certificat et la configuration HTTPS au sein de votre serveur web avec une seule commande.

      • sudo apt install certbot python3-certbot-apache

      Vous serez également invité à confirmer l’installation en appuyant sur Y, puis sur ENTER.

      Certbot est maintenant installé sur votre serveur. Dans l’étape suivante, nous allons vérifier la configuration d’Apache pour nous assurer que votre hôte virtuel est correctement configuré. Ainsi, le script client certbot pourra détecter vos domaines et reconfigurer votre serveur web pour utiliser automatiquement votre nouveau certificat SSL généré.

      Étape 2 — Vérification de la configuration de votre hôte virtuel Apache

      Afin de pouvoir obtenir et configurer automatiquement le SSL pour votre serveur web, Certbot doit trouver le bon hôte virtuel dans vos fichiers de configuration Apache. Le(s) nom(s) de domaine de votre serveur sera récupéré à partir des directives ServerName et ServerAlias définies dans votre bloc de configuration VirtualHost.

      Si vous avez suivi l’étape de configuration de l’hôte virtuel dans le tutoriel d’installation d’Apache, vous devriez avoir un bloc VirtualHost configuré pour votre domaine à /etc/apache2/sites-available/your_domain.conf avec les directives ServerName et ServerAlias déjà définies de manière appropriée.

      Pour vérifier cela, ouvrez le fichier d’hôte virtuel de votre domaine à l’aide de nano ou de votre éditeur de texte préféré :

      • sudo nano /etc/apache2/sites-available/your_domain.conf

      Trouvez les lignes ServerName et ServerAlias existantes. Elles devraient ressembler à ceci :

      /etc/apache2/sites-available/your_domain.conf

      ...
      ServerName your_domain
      ServerAlias www.your_domain
      ...
      

      Si vous avez déjà configuré votre ServerName et ServerAlias de cette manière, vous pouvez quitter votre éditeur de texte et passer à l’étape suivante. Si vous utilisez nano, vous pouvez sortir en tapant CTRL+X, puis Y et ENTER pour confirmer.

      Si la configuration actuelle de votre hôte virtuel ne correspond pas à l’exemple, mettez-la à jour en conséquence. Lorsque vous avez terminé, sauvegardez le fichier et quittez l’éditeur. Ensuite, exécutez la commande suivante pour valider vos modifications :

      • sudo apache2ctl configtest

      Vous devriez obtenir Syntax OK en guise de réponse. Si vous obtenez une erreur, rouvrez le fichier de l’hôte virtuel et vérifiez s’il y a des fautes de frappe ou des caractères manquants. Une fois que la syntaxe de votre fichier de configuration est correcte, rechargez Apache pour que les modifications prennent effet :

      • sudo systemctl reload apache2

      Grâce à ces changements, Certbot sera en mesure de trouver le bloc VirtualHost correct et de le mettre à jour.

      Ensuite, nous allons mettre à jour le pare-feu pour permettre le trafic HTTPS.

      Étape 3 — Autorisation du HTTPS à travers le pare-feu

      Si vous avez activé le pare-feu UFW, comme le recommandent les guides des conditions préalables, vous devrez ajuster les paramètres pour autoriser le trafic HTTPS. Lors de l’installation, Apache enregistre quelques profils d’application UFW différents. Nous pouvons utiliser le profil Apache Full pour autoriser le trafic HTTP et HTTPS sur votre serveur.

      Pour vérifier quel type de trafic est actuellement autorisé sur votre serveur, vous pouvez utiliser :

      Si vous avez suivi l’un de nos guides d’installation d’Apache, votre sortie devrait ressembler à ceci, ce qui signifie que seul le trafic HTTP sur le port 80 est actuellement autorisé :

      Output

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

      Pour permettre également le trafic HTTPS, autoriser le profil “Apache Full” et supprimer le profil “Apache” redondant :

      • sudo ufw allow 'Apache Full'
      • sudo ufw delete allow 'Apache'

      Votre statut ressemblera désormais à ceci :

      Output

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

      Vous êtes maintenant prêt à exécuter Certbot et à obtenir vos certificats.

      Étape 4 — Obtention d’un certificat SSL

      Certbot propose différents moyens d’obtenir des certificats SSL par le biais de plugins. Le plugin Apache se chargera de reconfigurer Apache et de recharger la configuration chaque fois que nécessaire. Pour utiliser ce plugin, tapez ce qui suit :

      Ce script vous invitera à répondre à une série de questions afin de configurer votre certificat SSL. Tout d’abord, il vous demandera une adresse électronique valide. Cette adresse électronique sera utilisée pour les notifications de renouvellement et les avis de sécurité :

      Output

      Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): you@your_domain

      Après avoir fourni une adresse électronique valide, appuyez sur ENTER pour passer à l’étape suivante. Vous serez ensuite invité à confirmer si vous acceptez les conditions d’utilisation du service Let’s Encrypt. Vous pouvez confirmer en appuyant sur A et ensuite sur ENTER :

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Please read the Terms of Service at
      https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
      agree in order to register with the ACME server at
      https://acme-v02.api.letsencrypt.org/directory
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      (A)gree/(C)ancel: A
      

      Ensuite, il vous sera demandé si vous souhaitez partager votre adresse électronique avec l’Electronic Frontier Foundation pour recevoir des nouvelles et d’autres informations. Si vous ne souhaitez pas vous abonner à leur contenu, tapez N. Sinon, tapez Y. Ensuite, appuyez sur ENTER pour passer à l’étape suivante.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Would you be willing to share your email address with the Electronic Frontier
      Foundation, a founding partner of the Let's Encrypt project and the non-profit
      organization that develops Certbot? We'd like to send you email about our work
      encrypting the web, EFF news, campaigns, and ways to support digital freedom.
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      (Y)es/(N)o: N
      

      La prochaine étape vous invitera à informer Certbot des domaines pour lesquels vous souhaitez activer le HTTPS. Les noms de domaine listés sont obtenus automatiquement à partir de la configuration de votre hôte virtuel Apache, c’est pourquoi il est important de s’assurer que vous avez les paramètres ServerName et ServerAlias corrects configurés dans votre hôte virtuel. Si vous souhaitez activer le HTTPS pour tous les noms de domaine répertoriés (recommandé), vous pouvez laisser l’invite vide et appuyer sur ENTER pour continuer. Sinon, sélectionnez les domaines pour lesquels vous souhaitez activer le HTTPS en énumérant chaque numéro approprié, séparé par des virgules et/ou des espaces, puis appuyez sur ENTER.

      Which names would you like to activate HTTPS for?
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      1: your_domain
      2: www.your_domain
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Select the appropriate numbers separated by commas and/or spaces, or leave input
      blank to select all options shown (Enter 'c' to cancel):
      

      Vous verrez une sortie de ce type :

      Obtaining a new certificate
      Performing the following challenges:
      http-01 challenge for your_domain
      http-01 challenge for www.your_domain
      Enabled Apache rewrite module
      Waiting for verification...
      Cleaning up challenges
      Created an SSL vhost at /etc/apache2/sites-available/your_domain-le-ssl.conf
      Enabled Apache socache_shmcb module
      Enabled Apache ssl module
      Deploying Certificate to VirtualHost /etc/apache2/sites-available/your_domain-le-ssl.conf
      Enabling available site: /etc/apache2/sites-available/your_domain-le-ssl.conf
      Deploying Certificate to VirtualHost /etc/apache2/sites-available/your_domain-le-ssl.conf
      

      Ensuite, vous serez invité à choisir si vous voulez ou non que le trafic HTTP soit redirigé vers le HTTPS. En pratique, cela signifie que lorsqu’une personne visite votre site web par des canaux non cryptés (HTTP), elle sera automatiquement redirigée vers l’adresse HTTPS de votre site web. Choisissez 2 pour activer la redirection, ou 1 si vous souhaitez conserver HTTP et HTTPS comme méthodes distinctes d’accès à votre site web.

      Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      1: No redirect - Make no further changes to the webserver configuration.
      2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
      new sites, or if you're confident your site works on HTTPS. You can undo this
      change by editing your web server's configuration.
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
      
      

      Après cette étape, la configuration de Certbot est terminée, et les dernières remarques sur votre nouveau certificat vous seront présentées, ainsi que l’emplacement des fichiers générés et la manière de tester votre configuration à l’aide d’un outil externe qui analyse l’authenticité de votre certificat :

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Congratulations! You have successfully enabled https://your_domain and
      https://www.your_domain
      
      You should test your configuration at:
      https://www.ssllabs.com/ssltest/analyze.html?d=your_domain
      https://www.ssllabs.com/ssltest/analyze.html?d=www.your_domain
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      
      IMPORTANT NOTES:
       - Congratulations! Your certificate and chain have been saved at:
         /etc/letsencrypt/live/your_domain/fullchain.pem
         Your key file has been saved at:
         /etc/letsencrypt/live/your_domain/privkey.pem
         Your cert will expire on 2020-07-27. To obtain a new or tweaked
         version of this certificate in the future, simply run certbot again
         with the "certonly" option. To non-interactively renew *all* of
         your certificates, run "certbot renew"
       - Your account credentials have been saved in your Certbot
         configuration directory at /etc/letsencrypt. You should make a
         secure backup of this folder now. This configuration directory will
         also contain certificates and private keys obtained by Certbot so
         making regular backups of this folder is ideal.
       - If you like Certbot, please consider supporting our work by:
      
         Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
         Donating to EFF:                    https://eff.org/donate-le
      
      

      Votre certificat est maintenant installé et chargé dans la configuration d’Apache. Essayez de recharger votre site web en utilisant https:// et remarquez l’indicateur de sécurité de votre navigateur. Il doit indiquer que votre site est correctement sécurisé, généralement en incluant une icône de cadenas dans la barre d’adresse.

      Vous pouvez utiliser le SSL Labs Server Test pour vérifier la qualité de votre certificat et obtenir des informations détaillées à son sujet, dans la perspective d’un service externe.

      Dans la prochaine et dernière étape, nous testerons la fonction de renouvellement automatique de Certbot, qui garantit que votre certificat sera renouvelé automatiquement avant la date d’expiration.

      Étape 5 — Verification du renouvellement automatique de Certbot

      Les certificats Let’s Encrypt ne sont valables que quatre-vingt-dix jours. Cette mesure vise à encourager les utilisateurs à automatiser le processus de renouvellement de leurs certificats, ainsi qu’à garantir que les certificats utilisés abusivement ou les clés volées expirent le plus tôt possible.

      Le package certbot que nous avons installé prend en charge les renouvellements en incluant un script de renouvellement dans /etc/cron.d, qui est géré par un service systemctl appelé certbot.timer. Ce script est exécuté deux fois par jour et renouvellera automatiquement tout certificat qui se trouve dans une période de trente jours précédant son expiration.

      Pour vérifier le statut de ce service et vous assurer qu’il est actif et qu’il fonctionne, vous pouvez utiliser :

      • sudo systemctl status certbot.timer

      Vous aurez une sortie similaire à celle-ci :

      Output

      ● certbot.timer - Run certbot twice daily Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled) Active: active (waiting) since Tue 2020-04-28 17:57:48 UTC; 17h ago Trigger: Wed 2020-04-29 23:50:31 UTC; 12h left Triggers: ● certbot.service Apr 28 17:57:48 fine-turtle systemd[1]: Started Run certbot twice daily.

      Pour tester le processus de renouvellement, vous pouvez faire un essai avec certbot :

      • sudo certbot renew --dry-run

      Si vous ne voyez pas d’erreurs, tout est prêt. Si nécessaire, Certbot renouvellera vos certificats et rechargera Apache pour récupérer les modifications. Si le processus de renouvellement automatisé échoue, Let’s Encrypt enverra un message à l’adresse électronique que vous avez indiquée, vous avertissant de l’expiration prochaine de votre certificat.

      Conclusion

      Dans ce tutoriel, vous avez installé le certbot client Let’s Encrypt, configuré et installé un certificat SSL pour votre domaine, et confirmé que le service de renouvellement automatique de Certbot est actif dans systemctl. Si vous avez d’autres questions sur l’utilisation de Certbot, leur documentation est un bon point de départ.



      Source link