If it is not explicitly told in following recipe, setting up services are described for Ubuntu 20.04 server, but applications are described for Xubuntu 20.04 workstation. If you use different Ubuntu version or Linux distribution, settings as well as content, names and places of configuration files may be different!
Got it.

Apache tīmekļa serveris

Saturs

Uzstādīšana

  1. root lietotājs izpilda komandu:

    apt-get install apache2
  2. Ja grib, lai web servera failu saturs atrodas /home mapē, kā root lietotājs izpilda komandas:

    /etc/init.d/apache2 stop
    mv /var/www /home
    ln -s /home/www /var/www
    /etc/init.d/apache2 start
  3. Pārliecinās ar pārlūkprogrammu, ka, atverot adresi http://localhost/, parādās Apache servera paziņojums It works!

Nosaukuma iestatīšana

  1. Izveido failu /etc/apache2/conf-available/servername.conf ar saturu:

    ServerName myservername
  2. Iespējo Apache moduli:

    sudo a2enconf servername
  3. Pārstartē Apache serveri.

HTTPS uzstādīšana

Lai datu plūsmu starp web serveri un klientu nevarētu noklausīties, to nepieciešams šifrēt. Šim nolūkam izmanto SSL protokolu, kas, izmantojot publiskās/privātās atslēgas (PKI) metodi, nodrošina uzticamu un drošu pārraides kanālu starp klientu un serveri.
HTTP pārraidītu pa SSL kanālu, sauc par HTTPS.

  1. Ja nepieciešams, izveido servera privātā/publiskā atslēgu pāra sertifikātus:

    sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout myserver.key -out myserver.crt

    un ievada atbildes uz vedņa uzdotajiem jautājumiem. Ja pirmajās atbildes nešķiet pareizas, komandu var izsaukt atkārtoti, un izveidot jaunu sertifikātu.

  2. Ja nepieciešams, izveido sertifikāta pieprasījumu:

    openssl req -new -key myserver.key -out myserver.csr
  3. Ja sertifikāta faili ir iegūti sertifikātu reģistrā:
    1. Ja nepieciešams, *.pem failu konvertē uz *.crt failu ar, piemēram, sekojošu komandu:

      openssl x509 -outform der -in site.pem -out site.crt
    2. Ja nepieciešams, *.crt failu uz *.pem failu konvertē sekojoši:

      openssl x509 -in ca.crt -out ca.pem -outform PEM
  4. Novieto failus sekojoši:
    1. .crt failu(s) mapē /etc/ssl/certs/
    2. .key failu mapē /etc/ssl/private/
  5. Iespējo Apache SSL moduli ar komandu:

    a2enmod ssl
  6. Pārliecinās, ka /etc/apache2/ports.conf fails satur rindas:

    <ifmodule mod_ssl.c>
        Listen 443
    </ifmodule>
  7. Pārliecinās, ka /etc/apache2/sites-available noklusētais ports ir 80 un sākuma rinda izskatās kā <VirtualHost *:80> nevis <VirtualHost *:*>
  8. Ja jau pastāv fails default-ssl, tad pārliecinās, ka tajā ir rindas:

    ...
    SSLEngine on
    ...
    SSLCertificateFile    /etc/ssl/certs/myserver.crt
    ...
    SSLCertificateKeyFile /etc/ssl/private/myserver.key
    ...

    vai arī

  9. Ja nepieciešams, izveido failu no default ar komandām:

    cd /etc/apache2/sites-available
    cp default default-ssl
    sed -i '1,2s/\*:80/*:443/' default-ssl
    sed -i "3a\\\tSSLEngine On\n\tSSLCertificateFile /etc/ssl/certs/myserver.crt\n\tSSLCertificateKeyFile /etc/ssl/private/myserver.key" default-ssl

    kur myserver.crt un myserver.key ir attiecīgie sertifikāta un privātās atslēgas faili.

  10. Ja nepieciešams izmantot vairāk par vienu sertifikātu, (sertifikātu ķēdi), tad norāda tos visus failā /etc/apache2/sites-available/ssl, piemēram, sekojoši:

    SSLCertificateFile /etc/ssl/certs/myserver.crt
    SSLCertificateChainFile /etc/ssl/certs/CA.crt
    ...
    SSLCertificateKeyFile /etc/ssl/private/myserver.key
  11. Iespējo Apache servera SSL vietni un pārstartē Apache serveri:

    a2ensite default-ssl
    /etc/init.d/apache2 restart
  12. Ja nepieciešams, pārbauda iestatījumu failu sintaksi:

    apachectl configtest
  13. Pieslēdzas serverim uz https://localhost/

Kļūdu risināšana

  1. Ja nepieciešams, pārbauda privātās atslēgas, servera sertifikāta un sertifikāta pieprasījuma jaucējsummas:

    openssl pkey -in myserver.key -pubout -outform pem | sha256sum;
    openssl x509 -in myserver.crt -pubkey -noout -outform pem | sha256sum;
    openssl req -in myserver.csr -pubkey -noout -outform pem | sha256sum;
  2. Ja ir gatavi *.key un *.cer (*.crt) faili, iespējams, ka atslēgas fails pieprasa paroli. Ar paroli aizsargātu atslēgas failu var pārtaisīt par neaizsargātu (tad jāpārliecinās, ka tam tiek klāt tikai autorizēti lietotāji) sekojoši:

    openssl rsa -in myserver.key -out apache1.key

HTTPS pastiprināšana

  1. root lietotājs atver failu /etc/apache2/mods-enabled/ssl.conf un izmaina rindas:

    SSLProtocol all -SSLv2

    uz

    SSLProtocol TLSv1.2
  2. Pievieno rindas /etc/apache2/mods-enabled/ssl.conf failā: 

    SSLCompression off
    SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
  3. Pārstartē Apache serveri

Saite: Strong SSL Security on Apache2

TLS sertifikāta atjaunošana

Ja, izpildot CA ieteiktās instrukcijas un pārstartējot Apache parāda kļūdu ziņojumu:

apache SSL Library Error: 185073780 error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch

Saskaņā ar šo un šo instrukciju, izpilda komandas:

# Izveido jaunu, drošāku atslēgu:
openssl genrsa -des3 -out domain-name.key.sec 2048
# Izveido sertifikāta pieprasījumu:
openssl req -new -key domain-name.key.sec -out domain-name.csr
#Noņem paroli privātajai atslēgai, lai serveri varētu pārstartēt bez paroles:
openssl rsa -in domain-name.key.sec -out domain-name.key

Pēc tam saliek vajadzīgos failus attiecīgajās vietās.

Alternatīva — HTTPS ar Let's Encrypt

Skatīt https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-18-04

Pārsūtīšanas likumi

No HTTP uz HTTPS

Failā 000-default.conf (vai tajā, kurā ir rinda <VirtualHost *:80>) pievieno rindas:

<VirtualHost *:80>
...
        ServerName aa.bb
...
        # Redirect to HTTPS:
        RewriteEngine on
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=301]
</VirtualHost>

No www.aa.bb uz aa.bb

Failā default-ssl.conf (vai tajā, kurā ir rinda <VirtualHost *:443>) pievieno rindas:

<IfModule mod_ssl.c>
<VirtualHost *:443>
...
        ServerName aa.bb
...
        # Redirect to site without www
        RewriteEngine On
        RewriteCond %{HTTP_HOST} ^www.%{SERVER_NAME}$ [NC]
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=301]
</VirtualHost>
</IfModule>

Mapes iekļaušana

Lai padarītu pieejamu failu sistēmas mapi ar failu pārlūkošanu web serverī, iekopē to kā simbolisko saiti zem /var/www. Piemēram:

ln -s /home/vmware/ /var/www/

Lai failu sistēma būtu pārlūkojama www-data vai jebkuram lietotājam vai grupai ir jābūt mapes lasīšanas un izpildes (t.i. pārlūkošanas) tiesībām.

chmod 775 /home/vmware

Indeksēšanas aizliegšana

Ja servera dati ir pieejami tikai autorizētiem lietotājiem, nav vajadzības indeksēt pieejamo (pieteikšanās u.rml.) lapu saturu

User-agent: *
Disallow: /

Sākuma mapes nomaiņa

Lai nomainītu sākuma mapi uz citu, failos 000-default.conf (un, ja nepieciešams, default-ssl.conf):

  1. izmaina rindu no:

    DocumentRoot /var/www/html

    uz, piemēram:

    DocumentRoot /home/moodle
  2. Pārstartē apache serveri.

.htaccess atļaušana

.htaccess ir Apache iestatījumu fails, ar kuru var noteikt katras mapes (attiecīgi arī URL) iestatījumus.
Lai uzlabotu veiktspēju un centralizētu drošības pārvaldību, pēc noklusēšanas {{.htaccess}} failu izmantošana ir aizliegta, un tā vietā ir jāizmanto apache2.conf un no tā iekļautos failus. Bet bieži vien atsevišķās tīmekļa lietotnēs ir nepieciešams izmantot .htaccess failus.

Lai atļautu .htaccesss failu lietotšanu:

  1. Atver /etc/apache2/sites-available/default failu (vai citus, ja izmanto virtuālās vietnes (virtual hosts) un nomaina tajā rindas:

    ...
    AllowOverride None
    ...

    uz 

    ...
    AllowOverride All
    ...
  2. Pārstartē Apache serveri:

    /etc/init.d/apache2 restart

Mapes pieeja ar vārdu un paroli

  1. Kā root lietotājs failā /etc/apache2/sites-available/default (un arī citos, piemēram, .../ssl) beigās pievieno rindas:

    ...
        <directory>
    AuthType Basic
    AuthName "Pieeja tikai ar paroli"
    AuthUserFile /etc/apache2/apache-passwd
    Require valid-user
        </directory>
  2. Izveido Apache paroļu failu, ievadot komandu:

    htpasswd -cm /etc/apache2/apache-passwd user

    un divas reizes ievada lietotāja paroli, pārējiem lietotājiem slēdzi -c nevajag.

  3. Pārstartē Apache:

    sudo /etc/init.d/apache2 restart

Skatīt arī

Saites


  
Tags Linux Tīmeklis Serveris
Created by Valdis Vītoliņš on 2008-08-08 09:20
Last modified by Valdis Vītoliņš on 2022-02-03 17:12
 
Xwiki Powered
Creative Commons Attribution 3.0 Unported License