Налаштування самопідписаного SSL

Крок 1: Увімкніть модуль SSL в Apache:
Якщо ви ще цього не зробили, увімкніть модуль ssl в Apache:
sudo a2enmod ssl


Після цього перезапустіть Apache:
sudo systemctl restart apache2


Крок 2: Згенеруйте самопідписаний сертифікат:
Ви можете використовувати утиліту openssl для створення самопідписаного сертифіката та приватного ключа.
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
Під час виконання цієї команди openssl попросить вас ввести деяку інформацію про ваш сайт та організацію. Ці дані будуть включені до сертифіката.


Крок 3: Налаштуйте віртуальний хост Apache для HTTPS:
Редагуйте файл конфігурації вашого віртуального хоста для HTTPS: Зазвичай він знаходиться в каталозі /etc/apache2/sites-available/ і може мати назву на зразок default-ssl.conf або your_domain.com-ssl.conf.

Відредагуйте файл конфігурації HTTPS (your_domain.com-ssl.conf):
sudo nano /etc/apache2/sites-available/your_domain.com-ssl.conf
Внесіть наступні зміни:
Додайте наступні рядки для вказівки шляхів до вашого самопідписаного сертифіката та приватного ключа:
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key


Переконайтеся, що шляхи до файлів сертифіката та ключа відповідають тим, які ви вказали при їх генерації.
Увімкніть новий віртуальний хост HTTPS:
sudo a2ensite your_domain.com-ssl.conf


Вимкніть старий віртуальний хост HTTP (за бажанням, якщо ви хочете перенаправляти весь трафік на HTTPS):
sudo a2dissite 000-default.conf # Або назва вашого HTTP віртуального хоста


Перезапустіть Apache:
sudo systemctl restart apache2


Частина інформації від Gemini

Налаштування безкоштовного SSL

  • Встановлюємо тулзу:

  • sudo apt install certbot -y

  • Зупиняємо виконання апаче (оскільки він займає 80 та 443 порти, а вони мають бути вільними на момент генерації сертифікату)

  • sudo systemctl stop apache2.service

  • Генеруємо сертифікат. "XXXXX.XX.XX"- заміняємо на наш домен

  • sudo certbot certonly --standalone --preferred-challenges http -d XXXXX.XX.XX --register-unsafely-without-email

  • Запускаємо апаче в роботу

  • sudo systemctl start apache2.service

  • Відкриваємо для редагнування файл конфігурації ssl (можливо замінюємо "defoult-ssl" на необхідний нам файл

  • sudo vim /etc/apache2/sites-available/default-ssl.conf

  • Вставляємо рядки нижче, ті які дефолтні треба закоментувати або видалити. "XXXXX.XX.XX"- заміняємо на наш домен

  • SSLCertificateFile /etc/letsencrypt/live/XXXXX.XX.XX/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/XXXXX.XX.XX/privkey.pem


  • Перезапускаємо апаче

  • sudo systemctl restart apache2


    PS: для автоматичного оновлення сертифікату потрібно додати команду по прикладу нижче в crone, на момент написання оновлення не робив
    0 2 15 * * /usr/bin/certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"