Apache'i konfigureerimine HTTPS-i kaudu töötamiseks. Apache + SSL

Dmitri Mosk

https://www.dmosk.ru/miniinstruktions.php?mini=apache-ssl

Uuendatud: 17.02.2022
Avaldatud: 31.01.2017

Juhised on kirjutatud UNIX-põhistele operatsioonisüsteemidele.

 ~

Sisu.

 ~

Samm 1: Sertifikaadi loomine

Päris-serveri jaoks tuleb sertifikaat hankida usaldusväärsest CA-st -- kas ettevõtte kohalikust või kommertslikust CA-st. Või tasuta saadud Let's Ecnryptist

(https://www.dmosk.ru/miniinstruktions.php?mini=get-letsencrypt).

Testkeskkonna jaoks võib luua ise allkirjastatud sertifikaadi. Selleks navigeerige kõigepealt töökausta.

``bash cd /etc/apache2

Looge sertifikaatide jaoks kaust ja navigeerige sinna:

``bash
mkdir ssl ; cd ssl

Ja genereerige sertifikaat:

openssl req -new -x509 -days 1461 -nodes -out cert.pem \
        -keyout cert.key \
        -subj "/C=RU/ST=SPb/L=SPb/O=Global Security/\
OU=IT osakond/CN=test.dmosk.local/CN=test"

*) selles näites on avalikud ja privaatsed võtmed loodud 4 aastaks (1461 päeva); subj parameetri väärtused võivad olla mis tahes osana testist.

 ~

Samm 2: Apache'i SSL-mooduli paigaldamine

Enne mooduli paigaldamist käivitage käsk:

apachectl -M | grep ssl

Kui näete sellist rida nagu:

ssl_module (shared)

Minge selle juhise kolmanda sammu juurde. Vastasel juhul installige httpd ssl_module.

a2enmod ssl

Avage apache'i konfiguratsioonifail:

nano /usr/local/etc/apache24/httpd.conf

*) eeldame, et kasutatakse apache 2.4.

Leidke ja kommenteerige lahti järgmised read:

...
LoadModule ssl_module libexec/apache24/mod_ssl.so
...
Include etc/apache24/extra/httpd-ssl.conf.
...

Ja pange kommentaarid ette järgmistele ridadele:

#<IfModule ssl_module
#SSLRandomSeed startup builtin
#SSLRandomSeed connect builtin
#</IfModule

Selleks, et seaded rakenduksid, tuleb veebiserver taaskäivitada ühe käsuga:

systemctl restart apache2

 ~

Samm 3: Apache'i konfigureerimine

Minge välja ssl kaustast:

cd ..

Avage fail virtuaalsete domeenide konfiguratsiooniga.

vi sites-enabled/site

Lisage avatud faili järgmine tekst

<VirtualHost *:443>
    ServerName site.ru
    DocumentRoot /var/www/apache/data
    SSLEngine on
    SSLCertificateFile ssl/cert.pem
    SSLCertificateKeyFile ssl/cert.key
    #SSLCertificateChainFile ssl/cert.ca-bundle
</VirtualHost>

*) kus:

Veenduge, et seaded on Apache'is õiged:

Apachectl configtest

Kui me näeme:

Syntax OK

Lugege uuesti apache'i konfiguratsiooni:

apachectl graceful

 ~

Samm 4: Kontrollige, et see töötab

Avage brauser ja minge meie veebilehele, lisades https://. Kui kasutate ise allkirjastatud sertifikaati (nagu meie puhul), kuvab brauser hoiatuse, et andmeedastus ei ole turvaline. Kinnitage meie kavatsus saidi avamiseks. Kui see toimib, minge sammu 5 juurde.

Kui see ei tööta, proovige leida põhjus, vaadates logifaili. See asub tavaliselt kataloogis /var/log/apache või /var/log/httpd.

 ~

Samm 5: Seadistage ümbersuunamine

Selleks, et kõik http päringud automaatselt https-le ümber suunata, peate seadistama ümbersuunamise (redirect). Selleks on mitu võimalust.

Konfiguratsioonifailis.

Avage virtuaalsete domeenide konfiguratsioonifail (nagu sammus 3) ja lisage järgmine:

<VirtualHost *:80>
    ServerName site.ru
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

*) selles konkreetses näites oleme suunanud ümber kõik päringud site.ru-le.
**) Pange eriti tähele, et kui teil on juba olemas VirtualHost *:80 loodava saidi jaoks, tuleb see välja kommenteerida või muuta.

Failis .htaccess tuleb

RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Rewrite mooduli paigaldamine.

Et ümbersuunamine Apache'is toimiks, peab rewrite moodul olema installeeritud.

a2enmod rewrite
systemctl restart apache2

 ~

Apache + NGINX

Kui kasutate veebiserverit, kus on nii Apache kui ka NGINX, siis tavaliselt näeb viimane välja. Sellisel juhul on see see, mis vastab http-päringutele, millisel juhul tuleb NGINXis konfigureerida SSL.

 ~

Lingid

  1. https://www.dmosk.ru/miniinstruktions.php?mini=apache-ssl

  2. https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-18-04

  3. https://httpd.apache.org/docs/2.4/vhosts/examples.html