Pažnja
Korak 1: Generiranje certifikata
Korak 2: Konfiguracija vatrozida
Korak 3: Apache konfiguracija virtualnog hosta
Korak 4: Omogućavanje Apache SSL modula
Korak 5: preusmjerite sav HTTP promet na HTTPS (izborno)
SSL i njegov nasljednik TLS (Secure Sockets Layer / Transport Layer Security) dodaju sloj enkripcije između klijenta i poslužitelja. Bez ove tehnologije, podaci se šalju na poslužitelj u obliku običnog teksta, što trećim stranama omogućuje čitanje svih informacija koje vaš poslužitelj šalje i prima.
Ovaj vodič će vas naučiti kako stvoriti SSL/TLS certifikat i aktivirati ga na Apache 2.4 na Ubuntu 16.04. Pretpostavljam da je Apache već postavljen i radi. Ako želite naučiti kako instalirati LAMP stog, pogledajte ovaj Vultr dokument .
Pažnja
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.
Korak 1: Generiranje certifikata
Prvo, stvorimo mjesto za pohranu datoteke.
mkdir ~/certificates
cd ~/certificates
Generirajte CSR i privatni ključ.
openssl req -x509 -newkey rsa:4096 -keyout apache.key -out apache.crt -days 365 -nodes
Tražit će informacije za zahtjev za certifikat. Dopunite odgovarajućim informacijama.
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) []:
Uobičajeni naziv trebao bi biti naziv vaše domene ili IP adresa poslužitelja. Također, ispunite svoj email.
Common Name (e.g. server FQDN or YOUR name) []: 203.0.113.122
Email Address []:webmaster@example.com
Sada premjestite certifikat u Apache konfiguracijsku mapu.
mkdir /etc/apache2/ssl
mv ~/certificates/* /etc/apache2/ssl/.
Certifikat je spreman! Zatim ćemo pripremiti Apache za rad s certifikatom.
Korak 2: Konfiguracija vatrozida
Moramo biti sigurni da je TCP port 443 otvoren. Ovaj port se koristi u SSL vezama umjesto porta 80. U ovom vodiču koristit ćemo UFW.
Provjerite je li UFW omogućen.
sudo ufw enable
Sada dopustite unaprijed definirane postavke Apachea za vatrozid.
sudo ufw allow 'Apache Full'
Upisivanjem " sudo ufw status", možete vidjeti popis trenutnih pravila. Vaša bi konfiguracija trebala izgledati ovako:
To Action From
-- ------ ----
Apache Full ALLOW Anywhere
OpenSSH ALLOW Anywhere
Apache Full (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
Također biste trebali dopustiti OpenSSH ovdje za buduće veze.
sudo ufw allow 'OpenSSH'
Korak 3: Apache konfiguracija virtualnog hosta
Idite na zadani direktorij konfiguracije web-mjesta Apache.
sudo nano /etc/apache2/sites-available/default-ssl.conf
Ova datoteka govori poslužitelju gdje tražiti SSL certifikat. S uklonjenim komentarima, trebao bi izgledati kao sljedeća konfiguracija.
<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>
Uredite ovaj redak:
ServerAdmin email@example.net
Dodajte ovo odmah ispod ServerAdmincrte:
ServerName ADD_YOUR_IP_OR_DOMAIN_NAME_HERE
Sada uredite ove retke s našom lokacijom certifikata:
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
Naša konačna datoteka trebala bi izgledati ovako:
<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>
Spremite i zatvorite datoteku.
Korak 4: Omogućavanje Apache SSL modula
Omogućite SSL modul upisivanjem:
sudo a2enmod ssl
Sada omogućite stranicu koju smo upravo uredili:
sudo a2ensite default-ssl.conf
Ponovno pokrenite Apache:
sudo service apache2 restart
Pristupimo novoj sigurnoj web stranici! Otvorite ga u svom pregledniku (uvjerite se da ste upisali https:// ).
https://YOUR_SERVER_IP
Vaš preglednik će vas upozoriti da je certifikat nevažeći, kao što smo očekivali. To se događa jer certifikat nije potpisan. Slijedite korake koje nudi vaš preglednik da biste nastavili na svoju stranicu.
Korak 5: preusmjerite sav HTTP promet na HTTPS (izborno)
Otvorite zadanu datoteku virtualnog hosta Apache:
nano /etc/apache2/sites-available/000-default.conf
Dodajte ovaj redak unutar <VirtualHost *:80>oznake:
Redirect / https://YOUR_SERVER_IP_OR_DOMAIN/
Ponovno učitaj Apache konfiguraciju:
sudo service apache2 reload
Sav promet web stranice sada će se automatski preusmjeravati na HTTPS.