Atenció
Pas 1: generació del certificat
Pas 2: configuració del tallafoc
Pas 3: configuració de l'amfitrió virtual d'Apache
Pas 4: Habilitació del mòdul Apache SSL
Pas 5: redirigeix tot el trànsit HTTP a HTTPS (opcional)
SSL i el seu successor TLS (Secure Sockets Layer / Transport Layer Security) afegeixen una capa de xifratge entre el client i el servidor. Sense aquesta tecnologia, les dades s'envien al servidor en text sense format, la qual cosa permet a tercers llegir tota la informació enviada i rebuda pel vostre servidor.
Aquest tutorial us ensenyarà com crear un certificat SSL/TLS i activar-lo a Apache 2.4 a Ubuntu 16.04. Suposo que Apache ja està configurat i funcionant. Si voleu aprendre a instal·lar una pila LAMP, consulteu aquest document Vultr .
Atenció
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.
Pas 1: generació del certificat
Primer, creem un lloc per emmagatzemar el fitxer.
mkdir ~/certificates
cd ~/certificates
Generar CSR i clau privada.
openssl req -x509 -newkey rsa:4096 -keyout apache.key -out apache.crt -days 365 -nodes
Es demanarà informació per a la sol·licitud de certificat. Completa amb la informació adequada.
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) []:
El nom comú hauria de ser el vostre nom de domini o l'adreça IP del servidor. A més, ompliu el vostre correu electrònic.
Common Name (e.g. server FQDN or YOUR name) []: 203.0.113.122
Email Address []:webmaster@example.com
Ara, moveu el certificat a la carpeta de configuració d'Apache.
mkdir /etc/apache2/ssl
mv ~/certificates/* /etc/apache2/ssl/.
El certificat està llest! A continuació, prepararem Apache per treballar amb el certificat.
Pas 2: configuració del tallafoc
Hem d'assegurar-nos que el port TCP 443 estigui obert. Aquest port s'utilitza a les connexions SSL en lloc del port 80. En aquest tutorial, utilitzarem UFW.
Assegureu-vos que UFW estigui habilitat.
sudo ufw enable
Ara permeteu la configuració predefinida d'Apache per al tallafoc.
sudo ufw allow 'Apache Full'
Si escriviu " sudo ufw status", podeu veure una llista de les regles actuals. La vostra configuració hauria de semblar-se a això:
To Action From
-- ------ ----
Apache Full ALLOW Anywhere
OpenSSH ALLOW Anywhere
Apache Full (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
També hauríeu de permetre OpenSSH aquí per a futures connexions.
sudo ufw allow 'OpenSSH'
Pas 3: configuració de l'amfitrió virtual d'Apache
Navegueu al directori predeterminat de configuració del lloc Apache.
sudo nano /etc/apache2/sites-available/default-ssl.conf
Aquest fitxer indica al servidor on ha de buscar el certificat SSL. Amb els comentaris eliminats, hauria de semblar a la configuració següent.
<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>
Edita aquesta línia:
ServerAdmin email@example.net
Afegeix això just a sota de la ServerAdminlínia:
ServerName ADD_YOUR_IP_OR_DOMAIN_NAME_HERE
Ara, editeu aquestes línies amb la ubicació del nostre certificat:
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
El nostre fitxer final hauria de semblar-se a això:
<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>
Desa i tanca el fitxer.
Pas 4: Habilitació del mòdul Apache SSL
Habiliteu el mòdul SSL escrivint:
sudo a2enmod ssl
Ara activeu el lloc que acabem d'editar:
sudo a2ensite default-ssl.conf
Reinicieu Apache:
sudo service apache2 restart
Entrem al nou lloc web segur! Obriu-lo al vostre navegador (assegureu-vos d'escriure https:// ).
https://YOUR_SERVER_IP
El vostre navegador us avisarà que el certificat no és vàlid, com esperàvem. Això passa perquè el certificat no està signat. Seguiu els passos que us ofereix el vostre navegador per accedir al vostre lloc.
Pas 5: redirigeix tot el trànsit HTTP a HTTPS (opcional)
Obriu el fitxer d'amfitrió virtual predeterminat d'Apache:
nano /etc/apache2/sites-available/000-default.conf
Afegeix aquesta línia dins de l' <VirtualHost *:80>etiqueta:
Redirect / https://YOUR_SERVER_IP_OR_DOMAIN/
Torneu a carregar la configuració d'Apache:
sudo service apache2 reload
Tot el trànsit del lloc web ara es redirigirà automàticament a HTTPS.