Налаштуйте Apache за допомогою самопідписаного сертифіката TLS/SSL в Ubuntu 16.04

SSL і його наступник TLS (Secure Sockets Layer / Transport Layer Security) додають рівень шифрування між клієнтом і сервером. Без цієї технології дані надсилаються на сервер у вигляді простого тексту, що дозволяє третім сторонам читати всю інформацію, надіслану та отриману вашим сервером.

Цей посібник навчить вас створити сертифікат SSL/TLS та активувати його в Apache 2.4 на Ubuntu 16.04. Я припускаю, що Apache вже налаштовано та запущено. Якщо ви хочете дізнатися, як встановити стек LAMP, перегляньте цей документ Vultr .

Увага

SSL/TLS certificates are normally generated by a trusted CA (certificate authority). By generating it yourself, you will be the signer, meaning the browser won't be able to verify whether the identity of the certificate should be trusted, and it will warn the user. Although it is possible to bypass this alert, public-facing sites should be using a certificate signed by a trusted CA. Let's encrypt is a CA that offers certificates for free. You can learn how to install their certificate in Apache and Ubuntu 16.04 here.

For internal applications, using a self-signed certificate might be valid, especially if you don't have a domain name.


Крок 1: Створення сертифіката

  1. Спочатку створимо місце для зберігання файлу.

    mkdir ~/certificates
    cd ~/certificates
    
  2. Згенерувати CSR і закритий ключ.

    openssl req -x509 -newkey rsa:4096 -keyout apache.key -out apache.crt -days 365 -nodes
    

    Він запитує інформацію для запиту на сертифікат. Доповніть відповідною інформацією.

    Country Name (2 letter code) [AU]: US
    State or Province Name (full name) [Some-State]: FL
    Locality Name (eg, city) []: Miami
    Organization Name (eg, company) [My Company]: My Company
    Organizational Unit Name (eg, section) []:
    

    Загальним ім'ям має бути ваше доменне ім'я або IP-адреса сервера. Також заповніть свою електронну пошту.

    Common Name (e.g. server FQDN or YOUR name) []: 203.0.113.122
    Email Address []:webmaster@example.com
    
  3. Тепер перемістіть сертифікат у папку конфігурації Apache.

    mkdir /etc/apache2/ssl
    mv ~/certificates/* /etc/apache2/ssl/.
    
  4. Сертифікат готовий! Далі ми підготуємо Apache до роботи з сертифікатом.

Крок 2: Конфігурація брандмауера

  1. Ми повинні переконатися, що порт TCP 443 відкритий. Цей порт використовується у з’єднаннях SSL замість порту 80. У цьому підручнику ми будемо використовувати UFW.

  2. Переконайтеся, що UFW увімкнено.

    sudo ufw enable
    
  3. Тепер дозвольте попередньо визначені налаштування Apache для брандмауера.

    sudo ufw allow 'Apache Full'
    
  4. Набравши " sudo ufw status", ви зможете побачити список поточних правил. Ваша конфігурація має виглядати так:

    To                         Action      From
    --                         ------      ----
    Apache Full                ALLOW       Anywhere
    OpenSSH                    ALLOW       Anywhere
    Apache Full (v6)           ALLOW       Anywhere (v6)
    OpenSSH (v6)               ALLOW       Anywhere (v6)
    
  5. Ви також повинні дозволити тут OpenSSH для майбутніх підключень.

    sudo ufw allow 'OpenSSH'
    

Крок 3. Конфігурація віртуального хоста Apache

  1. Перейдіть до каталогу конфігурації сайту Apache за замовчуванням.

    sudo nano /etc/apache2/sites-available/default-ssl.conf
    
  2. Цей файл повідомляє серверу, де шукати сертифікат SSL. Після видалення коментарів це має виглядати як така конфігурація.

    <IfModule mod_ssl.c>
      <VirtualHost _default_:443>
       ServerAdmin webmaster@localhost
    
       DocumentRoot /var/www/html
    
       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined
    
       SSLEngine on
    
       SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
       SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    
       <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
       </FilesMatch>
       <Directory /usr/lib/cgi-bin>
        SSLOptions +StdEnvVars
       </Directory>
    
     </VirtualHost>
    </IfModule>
    
  3. Редагувати цей рядок:

    ServerAdmin email@example.net
    
  4. Додайте це прямо під ServerAdminрядком:

    ServerName ADD_YOUR_IP_OR_DOMAIN_NAME_HERE
    
  5. Тепер відредагуйте ці рядки з розташуванням нашого сертифіката:

    SSLCertificateFile    /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key
    
  6. Наш остаточний файл має виглядати так:

    <IfModule mod_ssl.c>
     <VirtualHost _default_:443>
      ServerAdmin email@example.net
      ServerName 203.0.113.122
    
      DocumentRoot /var/www/html
    
      ErrorLog ${APACHE_LOG_DIR}/error.log
      CustomLog ${APACHE_LOG_DIR}/access.log combined
    
      SSLEngine on
    
      SSLCertificateFile    /etc/apache2/ssl/apache.crt
      SSLCertificateKeyFile /etc/apache2/ssl/apache.key
    
      <FilesMatch "\.(cgi|shtml|phtml|php)$">
       SSLOptions +StdEnvVars
      </FilesMatch>
      <Directory /usr/lib/cgi-bin>
       SSLOptions +StdEnvVars
      </Directory>
    
     </VirtualHost>
    </IfModule>
    
  7. Збережіть і закрийте файл.

Крок 4: Увімкнення модуля Apache SSL

  1. Увімкніть модуль SSL, ввівши:

    sudo a2enmod ssl
    
  2. Тепер увімкніть сайт, який ми щойно відредагували:

    sudo a2ensite default-ssl.conf
    
  3. Перезапустіть Apache:

    sudo service apache2 restart
    
  4. Давайте отримати доступ до нового безпечного веб-сайту! Відкрийте його у своєму браузері (переконайтеся, що ви ввели https:// ).

    https://YOUR_SERVER_IP
    

Ваш браузер попередить вас, що сертифікат недійсний, як ми очікували. Це відбувається тому, що сертифікат не підписаний. Виконайте дії, запропоновані вашим браузером, щоб перейти на свій сайт.

Крок 5. Переспрямуйте весь HTTP-трафік на HTTPS (необов'язково)

  1. Відкрийте файл віртуального хосту Apache за замовчуванням:

    nano /etc/apache2/sites-available/000-default.conf
    
  2. Додайте цей рядок всередині <VirtualHost *:80>тегу:

    Redirect / https://YOUR_SERVER_IP_OR_DOMAIN/
    
  3. Перезавантажте конфігурацію Apache:

    sudo service apache2 reload
    

Весь трафік веб-сайту тепер автоматично перенаправлятиметься на HTTPS.

Залишити коментар

Повстання машин: застосування ШІ в реальному світі

Повстання машин: застосування ШІ в реальному світі

Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.

DDOS-атаки: короткий огляд

DDOS-атаки: короткий огляд

Ви також стали жертвою DDOS-атак і спантеличені методами запобігання? Прочитайте цю статтю, щоб вирішити свої запитання.

Ви коли-небудь замислювалися, як хакери заробляють гроші?

Ви коли-небудь замислювалися, як хакери заробляють гроші?

Можливо, ви чули, що хакери заробляють багато грошей, але чи замислювалися ви коли-небудь, як вони заробляють такі гроші? давайте обговоримо.

Революційні винаходи від Google, які полегшать ваше життя.

Революційні винаходи від Google, які полегшать ваше життя.

Ви хочете побачити революційні винаходи Google і як ці винаходи змінили життя кожної людини сьогодні? Тоді читайте в блозі, щоб побачити винаходи Google.

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Концепція самокерованих автомобілів, щоб вирушати в дороги за допомогою штучного інтелекту, є мрією, яку ми давно мріємо. Але, незважаючи на кілька обіцянок, їх ніде не видно. Прочитайте цей блог, щоб дізнатися більше…

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

Оскільки наука розвивається швидкими темпами, бере на себе багато наших зусиль, ризики піддати себе незрозумілій Сингулярності також зростає. Читайте, що може означати для нас сингулярність.

Функціональні можливості шарів еталонної архітектури великих даних

Функціональні можливості шарів еталонної архітектури великих даних

Прочитайте блог, щоб дізнатися про різні шари архітектури великих даних та їх функціональні можливості найпростішим способом.

Еволюція зберігання даних – інфографіка

Еволюція зберігання даних – інфографіка

Методи зберігання даних можуть розвиватися з моменту народження Даних. Цей блог висвітлює еволюцію зберігання даних на основі інфографіки.

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

У цьому цифровому світі пристрої розумного дому стали важливою частиною життя. Ось кілька дивовижних переваг пристроїв розумного дому щодо того, як вони роблять наше життя гідним життя та спрощують його.

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Нещодавно Apple випустила додаткове оновлення macOS Catalina 10.15.4, щоб виправити проблеми, але схоже, що оновлення викликає більше проблем, що призводять до блокування комп’ютерів Mac. Прочитайте цю статтю, щоб дізнатися більше