HTTPS является протоколом гипертекстовой передачи безопасным и является безопасной версией протокола HTTP. Чтобы повысить безопасность, протокол HTTPS отправляет зашифрованные данные между веб-браузерами и веб-сайтами. Это чрезвычайно важно, когда пользователь передает конфиденциальные данные, такие как регистрация, хранение информации о кредитной карте, оплата онлайн и т.д. HTTPS использует SSL (Secure Socket Layer) для шифрования передаваемых данных и проверки идентификации серверов.

В следующих нескольких пунктах более подробно расскажу, как включить протокол HTTPS.

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

  • Сервер под управлением Ubuntu 24.04 или любой другой ОС Linux.
  • Привилегии пользователя: пользователь root или не root с привилегиями sudo.

Конвенции

1
2
# — данные команды должны выполняться с правами root либо непосредственно от имени пользователя root, либо с помощью команды sudo.
$ – данные команды должны выполняться от имени обычного пользователя

Шаг 1. Обновите систему

Мы предполагаем, что у вас установлена ​​новая версия Ubuntu 24.04. Нам необходимо обновить системные пакеты до последних доступных версий. Для этого выполните следующие команды:

1
sudo apt update -y && sudo apt upgrade -y

Система может нуждаться в перезагрузке после обновления.

1
sudo reboot -f

Шаг 2. Установка веб-сервера

Выберите один из веб-серверов, Apache, Nginx или Angie.

Apache

Чтобы установить Apache, выполните команду:

1
sudo apt install apache2

Nginx

Чтобы установить Nginx, выполните команду:

1
sudo apt install nginx

Какой бы веб-сервер вы ни выбрали для установки, будет работать автоматически во время установки.

Angie

Сначала необходимо обновить список пакетов и установить зависимости:

1
2
sudo apt update
sudo apt install -y ca-certificates curl

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

1
2
sudo curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg \
            https://angie.software/keys/angie-signing.gpg

Наконец, создаём запись о репозитории Angie в конфигурации пакетного менеджера. Здесь с помощью команд автоматически доставляется имя дистрибутива (версия), конфигурационный файл будет находится по следующему пути: /etc/apt/sources.list.d/angie.list. Если будет нужно удалить репозиторий, просто удалите этот файл.

1
2
echo "deb https://download.angie.software/angie/$(. /etc/os-release && echo "$ID/$VERSION_ID $VERSION_CODENAME") main" \
    | sudo tee /etc/apt/sources.list.d/angie.list > /dev/null

Обновим список пакетов с учётом нового репозитория.

1
sudo apt update

Обращаем внимание на успешное завершения команды, если есть ошибки, то нужно вернуться и проверить выполнение предыдущих шагов.

Если обновление пакетов прошло успешно, установим Angie:

1
sudo apt install angie

Веб‑сервер Angie установлен.

Также можно установить дополнительные модули для сжатия с помощью zstd и brotli:

1
sudo apt install angie-module-zstd angie-module-brotli

На этом установка завершена.

Шаг 3. Создание виртуального хоста

Apache

Если вы хотите запустить Apache в качестве веб-сервера, нужно завершить этот шаг.

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

Включить в файл следующее.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<VirtualHost *:80>

    ServerAdmin admin@yourdomain.com
    ServerName yourdomain.com
    ServerAlias www.yourdomain.com

    DocumentRoot /var/www/html/yourdomain.com

    ErrorLog /var/log/apache2/yourdomain.com_error.log
    CustomLog /var/log/apache2/yourdomain.com.log combined

</VirtualHost>

Пожалуйста, не забудьте заменить yourdomain.com своим фактическим доменным именем, указывающим на сервер. Сохранить файл, затем выйти из редактора.

Для предотвращения Apache от запуска после перезагрузки сервиса нам нужно предварительно проверить конфигурацию.

1
sudo apachectl -t

Если вы видите сообщение Syntax OK, то ваша конфигурация не имеет ошибок, и вы перезапустите Apache:

1
systemctl restart apache2

Nginx

Если вы хотите использовать Nginx, пропустите шаги выше и завершите следующее.

1
sudo nano /etc/nginx/conf.d/yourdomain.com.conf

Включить в этот файл следующее.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
server {
        listen 80;
        root /var/www/html/yourdomain.com;
        access_log /var/log/nginx/yourdomain.com.access.log;
        error_log /var/log/nginx/yourdomain.com.error.log;

        index index.html index.php;

        server_name yourdomain.com www.yourdomain.com;

        location / {
                try_files $uri $uri/ =404;
        }
}

Пожалуйста, не забудьте заменить yourdomain.com своим фактическим доменным именем, указывающим на сервер. Сохранить файл, выйти из редактора, а затем перезапустить Nginx.

1
sudo systemctl restart nginx

Angie

Но если вы хотите запустить Angie в качестве веб-сервера, нужно завершить этот шаг.

1
sudo nano /etc/angie/conf.d/yourdomain.com.conf

Включить в этот файл следующее.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
http {

    resolver 127.0.0.53;

    acme_client example https://acme-v02.api.letsencrypt.org/directory;

    server {

        listen 80;
        server_name example.com www.example.com;
        return 301 https://$host$request_uri;
    }

    server {
        listen 443 ssl;
        server_name example.com www.example.com;

        root /var/www/html/yourdomain.com;
        index index.html;

        acme                 example;

        ssl_certificate      $acme_cert_yourdomain;
        ssl_certificate_key  $acme_cert_key_yourdomain;
    }
}

Не забудьте перезагрузить конфигурацию после изменения и убедившись, что эта конфигурация работает

1
sudo systemctl restart angie

Шаг 4. Установка Certbot

Certbot - это инструмент для получения SSL-сертификатов от Let’s Encrypt и, по возможности, автоматических HTTPS на вашем сервере. Он также может выступать в качестве клиента для любого другого CA, который использует протокол ACME. Чтобы установить Certbot на Ubuntu 24.04, нам необходимо установить:

Если ваш сервер работает Apache:

1
sudo apt install python3-certbot-apache

Если ваш сервер работает Nginx:

1
sudo apt install python3-certbot-nginx

Шаг 5. Включить протокол HTTPS

Apache

Если вы используете Apache, нам нужно сначала включить SSL-модуль, потому что он не включается по умолчанию. Выполняете команду ниже, чтобы включить SSL-модуль.

1
# a2enmod ssl

Чтобы применить изменения, нам нужно перезапустить Apache.

1
sudo systemctl restart apache2

Это совместимо с модулем Apache SSL. Независимо от того, используете ли вы Apache или Nginx, вы можете выполнить команду ниже, чтобы включить протокол HTTPS и создать SSL-сертификат для вашего домена/поддомена.

1
sudo certbot

Вышеприведенная команда побуждает вас выбрать веб-сервер, который вы используете.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Saving debug log to /var/log/letsencrypt/letsencrypt.log

Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): you@yourdomain.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.5-February-24-2025.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, 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
Account registered.

How would you like to authenticate and install certificates?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Apache Web Server plugin (apache)
2: Nginx Web Server plugin (nginx)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Просто 1 или 2, затем нажмите по ENTER. Вам будет предложено ввести доменное имя, и будет выдан SSL-сертификат.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
Please enter the domain name(s) you would like on your certificate (comma and/or
space separated) (Enter 'c' to cancel): yourdomain.com
Requesting a certificate for yourdomain.com

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/yourdomain.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/yourdomain.com/privkey.pem
This certificate expires on 2026-02-06.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for yourdomain.com to /etc/nginx/conf.d/yourdomain.com.conf
Congratulations! You have successfully enabled HTTPS on https://yourdomain.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Шаг 6. Установка Socat и Acme

В качестве альтернативы Certbot мы можем установить acme.sh. Есть несколько способов установить acme.sh. На этом этапе мы будем использовать сценарий установки. Давайте оснащаться.

1
sudo apt install socat -y && sudo curl https://get.acme.sh | sh && source ~/.bashrc

Как только все будет сделано, мы сможем запустить эту команду для проверки установки

1
sudo acme.sh --version

Вышеприведенная команда напечатает такой выход:

1
2
https://github.com/acmesh-official/acme.sh
v3.1.2

По умолчанию acme.sh будет использовать ZeroSSL. Так как мы будем использовать Let’s Encrypt, давайте изменим CA по умолчанию.

1
sudo acme.sh --set-default-ca --server letsencrypt

Чтобы установить ZeroSSL, сначала мы должны создать учетную запись ZeroSSL:

1
sudo acme.sh --register-account -m admin@yourdomain.com --server zerossl

Теперь мы можем выпустить SSL-сертификат.

1
sudo acme.sh --issue -d yourdomain.com -w /var/www/html

Команда выше будет генерировать SSL-сертификат, и вы найдете файлы сертификатов, включая частный ключ и его сертификат CA. Вы можете использовать информацию о SSL-сертификатах для обновления виртуального хоста Apache или Nginx для создания виртуального хоста с поддержкой SSL.

Завершение

Теперь вы можете получить доступ к своему веб-сайту через свой домен/поддомен через HTTPS по адресу https://yourdomain.com

Если вам понравился этот пост об установке HTTPS-протокола на Ubuntu 24.04, пожалуйста, поделитесь им с друзьями или оставьте комментарий ниже.