Figyelem
1. lépés: A tanúsítvány létrehozása
2. lépés: A tűzfal beállítása
3. lépés: Apache virtuális gazdagép konfigurációja
4. lépés: Az Apache SSL modul engedélyezése
5. lépés: Az összes HTTP-forgalom átirányítása HTTPS-re (opcionális)
Az SSL és utódja, a TLS (Secure Sockets Layer / Transport Layer Security) titkosítási réteget ad az ügyfél és a kiszolgáló között. E technológia nélkül az adatok egyszerű szövegként kerülnek a szerverre, így a harmadik felek elolvashatják az Ön szervere által küldött és fogadott összes információt.
Ez az oktatóanyag megtanítja Önnek, hogyan hozhat létre SSL/TLS-tanúsítványt, és hogyan aktiválhatja azt Apache 2.4-en az Ubuntu 16.04-en. Feltételezem, hogy az Apache már be van állítva és fut. Ha meg szeretné tudni, hogyan kell LAMP-vermet telepíteni, tekintse meg ezt a Vultr-dokumentumot .
Figyelem
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. lépés: A tanúsítvány létrehozása
Először is hozzunk létre egy helyet a fájl tárolására.
mkdir ~/certificates
cd ~/certificates
CSR és privát kulcs generálása.
openssl req -x509 -newkey rsa:4096 -keyout apache.key -out apache.crt -days 365 -nodes
A tanúsítványkéréshez információkat fog kérni. Töltse ki a megfelelő információkkal.
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) []:
A közönséges név legyen a domain neve vagy a szerver IP-címe. Ezenkívül töltse ki az e-mail címét.
Common Name (e.g. server FQDN or YOUR name) []: 203.0.113.122
Email Address []:webmaster@example.com
Most helyezze át a tanúsítványt az Apache konfigurációs mappájába.
mkdir /etc/apache2/ssl
mv ~/certificates/* /etc/apache2/ssl/.
Elkészült a tanúsítvány! Ezután felkészítjük az Apache-t a tanúsítvánnyal való együttműködésre.
2. lépés: A tűzfal beállítása
Meg kell győződnünk arról, hogy a 443-as TCP-port nyitva van. Ezt a portot használják az SSL kapcsolatokban a 80-as port helyett. Ebben az oktatóanyagban UFW-t fogunk használni.
Győződjön meg arról, hogy az UFW engedélyezve van.
sudo ufw enable
Most engedélyezze az előre meghatározott Apache-beállításokat a tűzfal számára.
sudo ufw allow 'Apache Full'
A " sudo ufw status" beírásával megtekintheti az aktuális szabályok listáját. A konfigurációdnak ehhez hasonlónak kell lennie:
To Action From
-- ------ ----
Apache Full ALLOW Anywhere
OpenSSH ALLOW Anywhere
Apache Full (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
Itt is engedélyeznie kell az OpenSSH-t a jövőbeni kapcsolatokhoz.
sudo ufw allow 'OpenSSH'
3. lépés: Apache virtuális gazdagép konfigurációja
Keresse meg az alapértelmezett Apache webhely konfigurációs könyvtárát.
sudo nano /etc/apache2/sites-available/default-ssl.conf
Ez a fájl közli a szerverrel, hogy hol keresse az SSL-tanúsítványt. A megjegyzések eltávolítása után a következő konfigurációhoz hasonlóan kell kinéznie.
<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>
Szerkessze ezt a sort:
ServerAdmin email@example.net
Add ezt közvetlenül a ServerAdminsor alá:
ServerName ADD_YOUR_IP_OR_DOMAIN_NAME_HERE
Most szerkessze ezeket a sorokat a tanúsítvány helyével:
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
A végső fájlunknak ehhez hasonlónak kell lennie:
<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>
Mentse és zárja be a fájlt.
4. lépés: Az Apache SSL modul engedélyezése
Engedélyezze az SSL modult a következő beírásával:
sudo a2enmod ssl
Most engedélyezze az imént szerkesztett webhelyet:
sudo a2ensite default-ssl.conf
Indítsa újra az Apache-ot:
sudo service apache2 restart
Lépjünk be az új biztonságos weboldalra! Nyissa meg a böngészőben (győződjön meg róla, hogy https:// ) írja be.
https://YOUR_SERVER_IP
A böngészője figyelmeztetni fogja, hogy a tanúsítvány érvénytelen, ahogy azt vártuk. Ez azért történik, mert a tanúsítvány nincs aláírva. Kövesse a böngészője által felkínált lépéseket a webhelyre lépéshez.
5. lépés: Az összes HTTP-forgalom átirányítása HTTPS-re (opcionális)
Nyissa meg az Apache alapértelmezett virtuális gazdagépfájlját:
nano /etc/apache2/sites-available/000-default.conf
Adja hozzá ezt a sort a <VirtualHost *:80>címkén belül :
Redirect / https://YOUR_SERVER_IP_OR_DOMAIN/
Az Apache konfiguráció újratöltése:
sudo service apache2 reload
A webhely összes forgalma automatikusan átirányul a HTTPS-re.