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.)

WARNING
Tenzij anders vermeld, moeten alle bevelen in dit onderwerp als gebruiker met 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:

Een proxy instellen

NOTE
Ondersteuning voor OpenSearch is toegevoegd in 2.4.4. OpenSearch is een compatibele Elasticsearch. Zie Elasticsearch migreren aan OpenSearchvoor meer informatie.

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.

NOTE
De reden dat de proxy in dit voorbeeld niet is beveiligd, is dat het makkelijker is om een proxy in te stellen en te verifiëren. U kunt TLS met deze proxy gebruiken. Als u dit wenst, zorg ervoor u de volmachtsinformatie aan uw veilige virtuele gastheerconfiguratie toevoegt.

Een proxy instellen voor Apache 2.4

Deze sectie bespreekt hoe te om een volmacht te vormen gebruikend een virtuele gastheer.

  1. Schakel mod_proxy als volgt in:

    code language-bash
    a2enmod proxy_http
    
  2. Een teksteditor gebruiken om te openen /etc/apache2/sites-available/000-default.conf

  3. Voeg de volgende instructie boven aan het bestand toe:

    code language-conf
    Listen 8080
    
  4. Voeg het volgende toe onder aan het bestand:

    code language-conf
    <VirtualHost *:8080>
        ProxyPass "/" "http://localhost:9200/"
        ProxyPassReverse "/" "http://localhost:9200/"
    </VirtualHost>
    
  5. Apache opnieuw starten:

    code language-bash
    service apache2 restart
    
  6. 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:

  1. 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.

  2. Indien nodig installeert u htpasswd :

    • Ubuntu: apt-get -y install apache2-utils
    • CentOS: yum -y install httpd-tools

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.

  1. 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>
    
  2. 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.

  3. Sla uw wijzigingen op, sluit de teksteditor af en start Apache opnieuw:

    • CentOS: service httpd restart
    • Ubuntu: service apache2 restart

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.

recommendation-more-help
0f8e7db5-0e9c-4002-a5b8-a0088077d995