Apache configureren voor uw zoekmachine
Dit onderwerp bespreekt een voorbeeld om communicatie tussen uw Webserver en onderzoeksmotor (Elasticsearch of OpenSearch) te beveiligen gebruikend een combinatie van de encryptie van de Veiligheid van de Laag van het Vervoer (TLS) en basisauthentificatie van HTTP. U kunt naar keuze andere soorten authentificatie eveneens vormen; wij verstrekken verwijzingen voor die informatie.
(Een oudere termijn, de Veilige Laag van Contactdozen (SSL), wordt vaak gebruikt onderling verwisselbaar met TLS. In dit onderwerp, verwijzen wij naar TLS.)
root
voorrechten zijn ingegaan.Recommendations
We raden het volgende aan:
-
De webserver gebruikt TLS.
TLS valt buiten het bereik van dit onderwerp. Wij raden u echter ten zeerste aan een echt certificaat te gebruiken in productie en niet een zelfondertekend certificaat.
-
De zoekmachine werkt op dezelfde host als een webserver. Het runnen van de onderzoeksmotor en de Webserver op verschillende gastheren is voorbij het werkingsgebied van dit onderwerp.
Het voordeel van het plaatsen van zoekmachine en de webserver op dezelfde host is dat gecodeerde communicatie hierdoor niet kan worden onderschept. De webserver van het zoekprogramma hoeft niet hetzelfde te zijn als de Adobe Commerce-webserver. Adobe Commerce kan bijvoorbeeld Apache uitvoeren en Elasticsearch/OpenSearch kan nginx uitvoeren.
Als de zoekmachine wordt blootgesteld aan het openbare web, moet u verificatie configureren. Als uw zoekmachine-instantie binnen uw netwerk is beveiligd, is dit mogelijk niet nodig. Werk met uw hostingprovider om te bepalen welke beveiligingsmaatregelen u moet implementeren om uw instantie te beschermen.
Meer informatie over TLS
Zie een van de volgende bronnen:
-
Apache
-
Nginx
Een proxy instellen
Deze sectie bespreekt hoe te om Apache als onveilige volmacht te vormen zodat Adobe Commerce een onderzoeksmotor kan gebruiken die op deze server loopt. Deze sectie bespreekt vestigingHTTP Basis geen authentificatie; dat in Veilige mededeling met Apachewordt besproken.
Een proxy instellen voor Apache 2.4
Deze sectie bespreekt hoe te om een volmacht te vormen gebruikend een virtuele gastheer.
-
Schakel
mod_proxy
als volgt in:code language-bash a2enmod proxy_http
-
Een teksteditor gebruiken om te openen
/etc/apache2/sites-available/000-default.conf
-
Voeg de volgende instructie boven aan het bestand toe:
code language-conf Listen 8080
-
Voeg het volgende toe onder aan het bestand:
code language-conf <VirtualHost *:8080> ProxyPass "/" "http://localhost:9200/" ProxyPassReverse "/" "http://localhost:9200/" </VirtualHost>
-
Apache opnieuw starten:
code language-bash service apache2 restart
-
Verifieer de volmachtswerken door het volgende bevel in te gaan:
code language-bash curl -i http://localhost:<proxy port>/_cluster/health
Als u bijvoorbeeld Elasticsearch gebruikt en uw proxy poort 8080 gebruikt:
code language-bash curl -i http://localhost:8080/_cluster/health
Berichten die op de volgende vertoning lijken om op succes te wijzen:
code language-none HTTP/1.1 200 OK Date: Tue, 23 Feb 2019 20:38:03 GMT Content-Type: application/json; charset=UTF-8 Content-Length: 389 Connection: keep-alive {"cluster_name":"elasticsearch","status":"yellow","timed_out":false,"number_of_nodes":1,"number_of_data_nodes":1,"active_primary_shards":5,"active_shards":5,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":5,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":50.0}
Beveiligde communicatie met Apache
Deze sectie bespreekt hoe te om communicatie tussen Apache en de onderzoeksmotor te beveiligen gebruikend Basisauthentificatie van HTTPmet Apache. Raadpleeg een van de volgende bronnen voor meer opties:
Zie een van de volgende secties:
Een wachtwoord maken
Uit veiligheidsoverwegingen kunt u het wachtwoordbestand overal vinden, behalve in de hoofdmap van de webserver. In dit voorbeeld wordt getoond hoe u het wachtwoordbestand opslaat in een nieuwe map.
Indien nodig htpassword installeren
Controleer eerst of het hulpprogramma Apache htpasswd
als volgt is geïnstalleerd:
-
Voer de volgende opdracht in om te bepalen of
htpasswd
al is geïnstalleerd:code language-bash which htpasswd
Als een pad wordt weergegeven, wordt dit geïnstalleerd. Als de opdracht geen uitvoer retourneert, wordt
htpasswd
niet geïnstalleerd. -
Indien nodig installeert u
htpasswd
:- Ubuntu:
apt-get -y install apache2-utils
- CentOS:
yum -y install httpd-tools
- Ubuntu:
Een wachtwoordbestand maken
Voer de volgende opdrachten in als een gebruiker met root
-rechten:
mkdir -p /usr/local/apache/password
htpasswd -c /usr/local/apache/password/.<password file name> <username>
Wanneer
-
<username>
kan zijn:- Uitsnijden instellen: de gebruiker van de webserver of een andere gebruiker.
In dit voorbeeld gebruiken wij de gebruiker van de Webserver, maar de keus van gebruiker is aan u.
- Elasticsearch instellen: de gebruiker krijgt in dit voorbeeld de naam
magento_elasticsearch
-
<password file name>
moet een verborgen bestand zijn (begint met.
) en moet de naam van de gebruiker weerspiegelen. Zie de voorbeelden verderop in deze sectie voor meer informatie.
Volg de aanwijzingen op het scherm om een wachtwoord voor de gebruiker te maken.
Voorbeelden
Voorbeeld 1: kruin
U moet verificatie instellen voor slechts één gebruiker voor uitsnijden; in dit voorbeeld gebruiken we de gebruiker van de webserver. Voer de volgende opdrachten in om een wachtwoordbestand voor de gebruiker van de webserver te maken:
mkdir -p /usr/local/apache/password
htpasswd -c /usr/local/apache/password/.htpasswd apache
Voorbeeld 2: Elasticsearch
U moet authentificatie voor twee gebruikers instellen: met toegang tot nginx en met toegang tot Elasticsearch. Voer de volgende opdrachten in om wachtwoordbestanden voor deze gebruikers te maken:
mkdir -p /usr/local/apache/password
htpasswd -c /usr/local/apache/password/.htpasswd_elasticsearch magento_elasticsearch
Extra gebruikers toevoegen
Als u nog een gebruiker aan het wachtwoordbestand wilt toevoegen, voert u de volgende opdracht in als een gebruiker met root
-rechten:
htpasswd /usr/local/apache/password/.htpasswd <username>
Beveiligde communicatie met Apache
Deze sectie bespreekt hoe te opstelling de Basisauthentificatie van HTTP. Als u TLS en HTTP Basic-verificatie gebruikt, kan niemand communicatie met Elasticsearch of OpenSearch of met uw toepassingsserver onderscheppen.
In deze sectie wordt besproken hoe u kunt opgeven wie toegang heeft tot de Apache-server.
-
Gebruik een tekstverwerker om de volgende inhoud aan uw veilige virtuele host toe te voegen.
- Apache 2.4: Bewerken
/etc/apache2/sites-available/default-ssl.conf
code language-conf <Proxy *> Order deny,allow Allow from all AuthType Basic AuthName "Elasticsearch Server" # or OpenSearch Server AuthBasicProvider file AuthUserFile /usr/local/apache/password/.htpasswd_elasticsearch Require valid-user # This allows OPTIONS-requests without authorization <LimitExcept OPTIONS> Require valid-user </LimitExcept> </Proxy>
- Apache 2.4: Bewerken
-
Als u het voorgaande aan uw beveiligde virtuele host hebt toegevoegd, verwijdert u
Listen 8080
en de instructies<VirtualHost *:8080>
die u eerder aan uw onveilige virtuele host hebt toegevoegd. -
Sla uw wijzigingen op, sluit de teksteditor af en start Apache opnieuw:
- CentOS:
service httpd restart
- Ubuntu:
service apache2 restart
- CentOS:
Verifiëren
Deze sectie bespreekt twee manieren om te verifiëren dat de Basisauthentificatie van HTTP werkt:
- Een
curl
-opdracht gebruiken om te verifiëren dat u een gebruikersnaam en wachtwoord moet invoeren om de clusterstatus op te halen - HTTP Basic-verificatie configureren in de beheerfunctie
Een opdracht curl
gebruiken om de clusterstatus te verifiëren
Voer de volgende opdracht in:
curl -i http://<hostname, ip, or localhost>:<proxy port>/_cluster/health
Bijvoorbeeld, als u het bevel op de server van de onderzoeksmotor ingaat en uw volmacht gebruikt haven 8080:
curl -i http://localhost:8080/_cluster/health
Het volgende bericht geeft aan dat verificatie is mislukt:
HTTP/1.1 401 Unauthorized
Date: Tue, 23 Feb 2016 20:35:29 GMT
Content-Type: text/html
Content-Length: 194
Connection: keep-alive
WWW-Authenticate: Basic realm="Restricted"
<html>
<head><title>401 Authorization Required</title></head>
<body bgcolor="white">
<center><h1>401 Authorization Required</h1></center>
</body>
</html>
Probeer nu het volgende bevel:
curl -i -u <username>:<password> http://<hostname, ip, or localhost>:<proxy port>/_cluster/health
Bijvoorbeeld:
curl -i -u magento_elasticsearch:mypassword http://localhost:8080/_cluster/health
Dit keer slaagt het bevel met een bericht gelijkend op het volgende:
HTTP/1.1 200 OK
Date: Tue, 23 Feb 2016 20:38:03 GMT
Content-Type: application/json; charset=UTF-8
Content-Length: 389
Connection: keep-alive
{"cluster_name":"elasticsearch","status":"yellow","timed_out":false,"number_of_nodes":1,"number_of_data_nodes":1,"active_primary_shards":5,"active_shards":5,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":5,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":50.0}
HTTP Basic-verificatie configureren in de beheerfunctie
Voer de zelfde taken uit zoals die in de motorconfiguratie van het Onderzoekworden besproken behalve klik Yes van de Enable HTTP Auth lijst en ga uw gebruikersbenaming en wachtwoord op de verstrekte gebieden in.
Klik op Test Connection om te controleren of het werkt en klik vervolgens op Save Config .
U moet de cache leegmaken en opnieuw indexeren voordat u verdergaat.