Merk følgende
Trinn 1: Generering av sertifikatet
Trinn 2: Brannmurkonfigurasjon
Trinn 3: Apache virtuell vertskonfigurasjon
Trinn 4: Aktivering av Apache SSL-modul
Trinn 5: Omdiriger all HTTP-trafikk til HTTPS (valgfritt)
SSL, og dets etterfølger TLS (Secure Sockets Layer / Transport Layer Security) legger til et lag med kryptering mellom klienten og serveren. Uten denne teknologien sendes data til serveren i ren tekst, slik at tredjeparter kan lese all informasjon som sendes og mottas av serveren din.
Denne opplæringen vil lære deg hvordan du oppretter et SSL/TLS-sertifikat og aktiverer det på Apache 2.4 på Ubuntu 16.04. Jeg antar at Apache allerede er satt opp og kjører. Hvis du vil lære hvordan du installerer en LAMP-stabel, kan du se dette Vultr-dokumentet .
Merk følgende
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.
Trinn 1: Generering av sertifikatet
La oss først lage et sted å lagre filen.
mkdir ~/certificates
cd ~/certificates
Generer CSR og privat nøkkel.
openssl req -x509 -newkey rsa:4096 -keyout apache.key -out apache.crt -days 365 -nodes
Den vil be om informasjon for sertifikatforespørselen. Fyll ut med riktig informasjon.
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) []:
Vanlig navn skal være ditt domenenavn eller serverens IP-adresse. Fyll også ut e-posten din.
Common Name (e.g. server FQDN or YOUR name) []: 203.0.113.122
Email Address []:webmaster@example.com
Flytt nå sertifikatet til Apache-konfigurasjonsmappen.
mkdir /etc/apache2/ssl
mv ~/certificates/* /etc/apache2/ssl/.
Sertifikatet er klart! Deretter vil vi forberede Apache til å jobbe med sertifikatet.
Trinn 2: Brannmurkonfigurasjon
Vi må sørge for at TCP-port 443 er åpen. Denne porten brukes i SSL-tilkoblinger i stedet for port 80. I denne opplæringen skal vi bruke UFW.
Sørg for at UFW er aktivert.
sudo ufw enable
Tillat nå de forhåndsdefinerte Apache-innstillingene for brannmuren.
sudo ufw allow 'Apache Full'
Ved å skrive " sudo ufw status" kan du se en liste over gjeldende regler. Konfigurasjonen din skal ligne denne:
To Action From
-- ------ ----
Apache Full ALLOW Anywhere
OpenSSH ALLOW Anywhere
Apache Full (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
Du bør også tillate OpenSSH her for fremtidige tilkoblinger.
sudo ufw allow 'OpenSSH'
Trinn 3: Apache virtuell vertskonfigurasjon
Naviger til standard Apache-nettstedkonfigurasjonskatalog.
sudo nano /etc/apache2/sites-available/default-ssl.conf
Denne filen forteller serveren hvor den skal lete etter SSL-sertifikatet. Med kommentarene fjernet, skal det se ut som følgende konfigurasjon.
<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>
Rediger denne linjen:
ServerAdmin email@example.net
Legg til dette rett under ServerAdminlinjen:
ServerName ADD_YOUR_IP_OR_DOMAIN_NAME_HERE
Rediger nå disse linjene med sertifikatplasseringen vår:
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
Den endelige filen vår skal ligne denne:
<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>
Lagre og lukk filen.
Trinn 4: Aktivering av Apache SSL-modul
Aktiver SSL-modulen ved å skrive:
sudo a2enmod ssl
Aktiver nå nettstedet vi nettopp har redigert:
sudo a2ensite default-ssl.conf
Start Apache på nytt:
sudo service apache2 restart
La oss få tilgang til det nye sikre nettstedet! Åpne den i nettleseren din (sørg for at du skriver https:// ).
https://YOUR_SERVER_IP
Nettleseren din vil advare deg om at sertifikatet er ugyldig, slik vi forventet. Dette skjer fordi sertifikatet ikke er signert. Følg trinnene som tilbys av nettleseren din for å fortsette til nettstedet ditt.
Trinn 5: Omdiriger all HTTP-trafikk til HTTPS (valgfritt)
Åpne Apaches standard virtuelle vertsfil:
nano /etc/apache2/sites-available/000-default.conf
Legg til denne linjen i <VirtualHost *:80>taggen:
Redirect / https://YOUR_SERVER_IP_OR_DOMAIN/
Last inn Apache-konfigurasjonen på nytt:
sudo service apache2 reload
All nettstedtrafikk vil nå automatisk omdirigere til HTTPS.