Постараюсь максимально коротко, по принципу шпаргалок. Чтобы всё работало, ваш сервер должен быть настроен согласно рекомендациям в этой статье. Для удобства, вот небольшое оглавление по данной шпаргалке:
- Создание папки с сайтом и файла конфигурации;
- Создание бесплатного SSL сертификата Let’s Encrypt;
- Бонус 1: Создание самоподписанного SSL сертификата;
- Бонус 2: Настройка перенаправлений (редиректов) с http на https
Создание папки с сайтом и файла конфигурации;
Для начала переходим в /var/www/html и создаём там папку с именем нашего домена. В моём случае это icopydoc.com. Для теста заливаю в эту папку файл index.html
Теперь переходим в /etc/apache2/sites-available/ и создаём в ней файл с расширением conf, имя которого соответствует нашему домену. В моём случае файл будет называться icopydoc-com.conf, у вас вместо icopydoc.com будет что-то другое.

Открываем созданный на предыдущем шаге файл icopydoc-com.conf и наполняем его следующей информацией:
<VirtualHost *:80>
ServerAdmin admin@icopydoc.com
ServerName icopydoc.com
ServerAlias www.icopydoc.com
DocumentRoot /var/www/html/icopydoc.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Подключаем файл конфигурации. Для этого в консоли сервера вводим команду:
sudo a2ensite icopydoc-com.conf
Завершающим шагом перезагружаем наш Апач
sudo service apache2 restart
Создание бесплатного SSL сертификата Let’s Encrypt на Ubuntu + Apache
Установка Certbot
Для начала установим пакет certbot, а также пакет python3-certbot-apache, который позволит в дальнейшем перевыпускать SSL-сертификаты автоматически.
sudo apt install certbot python3-certbot-apache
Настройка брандмауэра
Если включён файрволл, то далее необходимо разблокировать трафик HTTPS. Для этого, активируйте профиль Apache Full и перезапустите файрволл:
sudo ufw allow 'Apache Full'
sudo ufw disable
sudo ufw enable
Проверьте открытые порты командой:
sudo ufw status
Должно быть примерно так, как на картинке (открыт Apache Full и отсутствовать просто Apache):

Получение SSL-сертификата Let’s Encrypt
Теперь мы можем бесплатно получить сертификат Let’s Encrypt:
sudo certbot --apache
Если вы запускаете certbot впервые, вам будет предложено ввести адрес электронной почты, который будет использоваться для отправки уведомлений об обновлениях и ошибках. Введите действующий email и нажмите Enter. После этого вам будет предложено принять условия использования Let’s Encrypt. Для этого нажмите Y и Enter:

Затем certbot спросит, хотите ли вы подписаться на рассылку с новостями и объявлениями. Рекомендую отказаться, нажав N и далее Enter.
После этого Certbot запросит список доменов, для которых необходимо активировать HTTPS-соединение. Указанные домены будут автоматически взяты из конфигурации виртуального сервера Apache, поэтому необходимо убедиться, что ваш виртуальный сервер содержит корректные настройки ServerName и ServerAlias. Если вы хотите включить HTTPS-шифрование для всех указанных доменных имен (рекомендуется), оставьте командную строку пустой и нажмите Enter для продолжения. В противном случае укажите домены, на которых требуется активировать HTTPS, разделяя их запятыми или пробелами, затем нажмите Enter

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

Для проверки, что всё получилось, перезагрузить свой сайт, указав https://, и обратите внимание на индикатор безопасности в браузере. В большинстве браузеров будет гореть зеленый замочек в адресной строке.
Тестирование автоматического обновления сертификата
Поскольку сертификаты Let’s Encrypt действительны только в течение 90 дней нужно сразу автоматизировать процесс их продления. Делается всё очень просто. Нужно протестировать процесс обновления, запустив так называемый "сухой прогон":
sudo certbot renew --dry-run
Если все работает корректно, значит, вы успешно настроили сертификат Let’s Encrypt для своего веб-сервера Apache. Certbot автоматически обновит ваши сертификаты и перезапустит Apache, чтобы применить изменения.

Если автоматическая генерация сертификата не стартует, то система Let’s Encrypt отправляет уведомление на указанный адрес электронной почты для предупреждения о завершении срока действия существующего сертификата. В этом случае вам нужно будет создать новый сертификат самостоятельно.
Бонус 1: Создание самоподписанного SSL сертификата
В качестве бонуса хочу показать, как можно создавать самоподписные SSL сертификаты. Поскольку данный способ не требует коннекта с сервером сертификации, то будет выдавать предупреждения многими браузерами и антивирусами, а значит его лучше не использовать на рабочих проектах. Однако, знать о его существовании всё же стоит. Итак, пошагово начнём настройку протокола самоподписного SSL на Ubuntu + Apache.
Для начала открываем 443-й порт и проверяем, что всё получилось:
ufw allow 443/tcp
sudo ufw disable
sudo ufw enable
sudo ufw status
Генерируем SSL сертификат для нашего сайта:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/icopydoc-com_key.key -out /etc/ssl/icopydoc-com_crt.crt
где:
- req -запрос на создание сертификата
- -x509 - создание самоподписанного сертификата
- -days - время действия сертификата
- -keyout - путь, куда поместим файл ключей;
- -out - путь, куда поместим файл сертификата
Теперь открываем созданный нами ранее файл конфигурации icopydoc-com.conf
nano /etc/apache2/sites-available/icopydoc-com.conf
Добавляем правила для 443 порта:
<VirtualHost *:443>
ServerAdmin admin@icopydoc.com
ServerName icopydoc.com
ServerAlias www.icopydoc.com
DocumentRoot /var/www/html/icopydoc.com
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
#Include conf-available/serve-cgi-bin.conf
SSLEngine on
SSLCertificateFile /etc/ssl/icopydoc-com_crt.crt
#SSLCertificateChainFile /etc/ssl/icopydoc-com_ca.crt
SSLCertificateKeyFile /etc/ssl/icopydoc-com_key.key
</VirtualHost>
Если вы хотите, чтобы ваш сайт был доступен только по протоколу https то вам нужно будет либо изменить содержимое блока <VirtualHost *:80>, добавив перенаправление, либо в корень сайта загрузить файл .htaccess и настроить редиректы в нём. Подробнее оба варианта будут рассмотрены ниже.
Перезапускаем Апач:
apachectl restart
Пробуем открыть наш сайт по протоколу https. Т.к сертификат самоподписной, то браузере выдал предупреждение (то самое, о котором я говорим в самом начале), однако сайт благополучно открылся:

Бонус 2. Настройка перенаправлений (редиректов) с http на https
Если вы настраивали сертификат Let’s Encrypt по основной инструкции из данного урока, то надобности в прописании редиректов, вероятно, не возникнет. Будет работать и так. А вот при создании самоподписанного сертификата - однозначно понадобится.
Итак, включим модуль перенаправлений на сервере Апач:
sudo a2enmod rewrite
Способ 1. Через .htaccess
перейдём в корневую папку с файлами нашего сайта и создадим в ней файл .htaccess:
nano .htaccess
Добавим правила и сохраним файл:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
Способ 2. Через файл conf
Откроем уже привычным нам способом файл конфигурации нашего сайта icopydoc-com.conf и добавим в блок настроек для 80-го порта строку с редиректом:
Redirect / https://www.icopydoc.com/
чтобы было понятнее, вот весь блок целиком:
<VirtualHost *:80>
ServerAdmin admin@icopydoc.com
ServerName icopydoc.com
ServerAlias www.icopydoc.com
Redirect / https://www.icopydoc.com/
DocumentRoot /var/www/html/icopydoc.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Сохраним файл и перезапустим Apache:
sudo service apache2 restart
После этого редирект с http на https будет настроен.
Теперь вы знаете, как настроить домен на сервере Убунту+Апач+SSL.