Ubuntu server 16.04 LTS – LAMP – част 5

Протокола HTTPS

HTTPS е протокол за защитена комуникация в Интернет, който на практика не е самостоятелен протокол а комбинация от HTTP и SSL/TLS като по този начин защитава класическата HTTP връзка. Основната цел на HTTPS е да се осигури защитена връзка и сигурност при преноса на данни между Интернет потребителите. HTTPS удостоверява сайта на който е инсталиран и криптира двупосочно връзката между клиент и сървър, което осигурява защита срещу подслушване, подправяне или фалшифициране на съдържанието на съобщенията. Този процес дава гаранция, че потребителят се е свързвал с оригинален а не фалшив сайт, както и гарантира, че съдържанието на съобщенията между потребителя и сайта не може да се прочете или подправи от трети страни. В днешно време HTTPS става все по важен, да не кажа задължителен за всякакъв тип уеб сайтове на който има повече от един потребителски акаунт.

Браузърите с които “сърфираме” показват предупреждение, ако получат невалиден сертификат като някакво стряскащо съобщение за несигурен сайт, а когато получат валиден са възприели “зелен катинар” като символ за сигурна връзка, осигурена от “трета страна” (сертификационен орган) от който на практика сме получили сертификата.

Сертификатите подписани от оторизиран сертификационен орган могат да бъдат както платени така и безплатни като платените естетсвено имат по разширени възможности (по добра защита, изписване на организацията в адресната лента и други). Let’s Encrypt е безплатна услуга за издаване на сертификати предоставяна от Internet Security Research Group (ISRG) който е отворен сертифициращ орган и работи в полза на обществото. Let’s Encrypt предоставя два начина за добиване на сертификат с shell, и без shell за хостинг провайдъри като аз тук ще разгледам варианта с shell (bash).

Let’s Encrypt

Let’s Encrypt предлага за shell клиента Certbot който може да автоматизира издаването на сертификат и обновяването му без прекъсване. Certbot е лесен за използване и работи на много операционни системи. Посетете сайта на Certbot за да получите потребителски инструкции за вашата операционна система и уеб сървър.

CerBot

Certbot е лесен за използване автоматичен клиент, който инсталира SSL/TLS сертификат на web сървъри. Certbot е разработен на Python и е безплатен софтуер с отворен код. Неговата цел е максимално да улесни процеса по инсталиране и поддръжка на SSL/TLS сертификати. Една от най силните страни на Certbot е системата му за автоматично обновяване на сертификати онлайн.

Как да инсталираме CerBot

sudo apt-get install python-letsencrypt-apache

И да старираме Apache плъгина за да ни помогне да преминем през съветника за създаването на нашия сертификат.

letsencrypt --apache

Сайтовете които направих до тук са тестови, за това избирам опцията Easy, но в един продукшън сайт едновременото ползване на HTTP и HTTPS ще е доста по несигурно отколкото дори само HTTP. Затова ако сайта ви не е тестов задължително изберете Secure.

В последния прозорец в терминала софтуера ни казва, че вече имаме конфигуриран сертификат и всичко е наред. Разбира веднага ще проверим това.

Тук вече става ясно, че CertBot ни е издал сертификат за 90 дни, след това той ще изтече и ще светне червено в ляво на “адрес бара”, което никак не е добре защото всеки един браузер ще сложи знак за внимание, че сертификата на сайта е изтекъл и той е несигурен. По тази причина трябва да конфигурираме и системата за обновяване.

Обновяване

Certbot може да бъде конфигуриран да поднови своите сертификати автоматично преди изтичането на срока им. Затова трябва да се възползваме от тази функция. Може да се тества автоматичното подновяване на сертификат с тази команда:

sudo letsencrypt renew --dry-run --agree-tos

За да конфигурирам Certbot да проверява два пъти дневно дали е изтекъл сертификата ще редактирам crontab по следния начин:

sudo nano /etc/crontab

Проверка на всеки 12 часа.

* */12 * * *   root letsencrypt renew

Рестартираме Cron за да влязат промените в сила.

sudo systemctl restart cron.service

Пренасочване HTTP на HTTPS

Казах вече, че от гледна точка на сигурноста не трябва да ползваме и двата протокола HTTP и HTTPS. След като вече сме сигурни, че имаме сертификат на SSL ще пренасочим HTTP към HTTPS по следния начин с Apache модула Rewrite.

sudo nano /etc/apache2/sites-available/mysite.itservice-bg.net.conf

Добавяме последните три реда които започват с Rewrite, също трябва да се редактира и реда “=mysite.itservice-bg.net” като се добави домейна.

<VirtualHost *:80>
ServerName mysite.itservice-bg.net
ServerAdmin support@itservice-bg.net
DocumentRoot /var/www/mysite
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =mysite.itservice-bg.net
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
</VirtualHost>

И рестартраме Apache

sudo systemctl restart apache2.service

След това отваряме един браузер и пишем в адрес бара http://mysite.itservice-bg.net след което той автоматично трябва да ни пренасочи кък https:// и да ни светне зелен катинар в дясната част. Ясно е, че вече и да искаме да отворим сайта с http:// няма да стане, web сървъра винаги ще ни пренасовчва към https://

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.