Пажња
Корак 1: Генерисање сертификата
Корак 2: Конфигурација заштитног зида
Корак 3: Апацхе конфигурација виртуелног хоста
Корак 4: Омогућавање Апацхе ССЛ модула
Корак 5: Преусмерите сав ХТТП саобраћај на ХТТПС (опционо)
ССЛ и његов наследник ТЛС (Сецуре Соцкетс Лаиер / Транспорт Лаиер Сецурити) додају слој енкрипције између клијента и сервера. Без ове технологије, подаци се шаљу на сервер у облику обичног текста, омогућавајући трећим странама да прочитају све информације које ваш сервер шаље и прима.
Овај водич ће вас научити како да креирате ССЛ/ТЛС сертификат и да га активирате на Апацхе 2.4 на Убунту 16.04. Претпостављам да је Апацхе већ постављен и ради. Ако желите да научите како да инсталирате ЛАМП стек, погледајте овај Вултр документ .
Пажња
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: Генерисање сертификата
Прво, направимо место за чување датотеке.
mkdir ~/certificates
cd ~/certificates
Генеришите ЦСР и приватни кључ.
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) []:
Уобичајено име треба да буде име вашег домена или ИП адреса сервера. Такође, попуните своју е-пошту.
Common Name (e.g. server FQDN or YOUR name) []: 203.0.113.122
Email Address []:webmaster@example.com
Сада преместите сертификат у Апацхе конфигурациони фолдер.
mkdir /etc/apache2/ssl
mv ~/certificates/* /etc/apache2/ssl/.
Сертификат је спреман! Затим ћемо припремити Апацхе за рад са сертификатом.
Корак 2: Конфигурација заштитног зида
Морамо да се уверимо да је ТЦП порт 443 отворен. Овај порт се користи у ССЛ конекцијама уместо порта 80. У овом водичу користићемо УФВ.
Уверите се да је УФВ омогућен.
sudo ufw enable
Сада дозволите унапред дефинисана Апацхе подешавања за заштитни зид.
sudo ufw allow 'Apache Full'
Ако унесете " sudo ufw status", можете видети листу тренутних правила. Ваша конфигурација би требало да личи на ово:
To Action From
-- ------ ----
Apache Full ALLOW Anywhere
OpenSSH ALLOW Anywhere
Apache Full (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
Такође би требало да дозволите ОпенССХ овде за будуће везе.
sudo ufw allow 'OpenSSH'
Корак 3: Апацхе конфигурација виртуелног хоста
Идите до подразумеваног конфигурационог директоријума Апацхе сајта.
sudo nano /etc/apache2/sites-available/default-ssl.conf
Ова датотека говори серверу где да тражи ССЛ сертификат. Са уклоњеним коментарима, требало би да изгледа као следећа конфигурација.
<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>
Уредите овај ред:
ServerAdmin email@example.net
Додајте ово одмах испод ServerAdminлиније:
ServerName ADD_YOUR_IP_OR_DOMAIN_NAME_HERE
Сада уредите ове редове са локацијом нашег сертификата:
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
Наш коначни фајл би требао да личи на ово:
<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>
Сачувајте и затворите датотеку.
Корак 4: Омогућавање Апацхе ССЛ модула
Омогућите ССЛ модул тако што ћете откуцати:
sudo a2enmod ssl
Сада омогућите сајт који смо управо уредили:
sudo a2ensite default-ssl.conf
Поново покрените Апацхе:
sudo service apache2 restart
Приступимо новој безбедној веб страници! Отворите га у свом претраживачу (обавезно укуцајте хттпс:// ).
https://YOUR_SERVER_IP
Ваш претраживач ће вас упозорити да је сертификат неважећи, као што смо очекивали. Ово се дешава зато што сертификат није потписан. Пратите кораке које нуди ваш претраживач да бисте наставили на своју веб локацију.
Корак 5: Преусмерите сав ХТТП саобраћај на ХТТПС (опционо)
Отворите Апацхе подразумевану виртуелну датотеку хоста:
nano /etc/apache2/sites-available/000-default.conf
Додајте ову линију унутар <VirtualHost *:80>ознаке:
Redirect / https://YOUR_SERVER_IP_OR_DOMAIN/
Поново учитај Апацхе конфигурацију:
sudo service apache2 reload
Сав саобраћај на веб локацији ће сада аутоматски преусмеравати на ХТТПС.