Конфигурирайте 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 doc .

внимание

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.

Оставете коментар

Възходът на машините: Реални приложения на AI

Възходът на машините: Реални приложения на AI

Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.

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 машини. Прочетете тази статия, за да научите повече