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 HTTP-basisverificatie. 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 zijn ingegaan root rechten.

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- of Magento Open Source-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 naar OpenSearch voor meer informatie .

In deze sectie wordt besproken hoe u Apache als een onveilig zodat Adobe Commerce een zoekprogramma kan gebruiken dat op deze server wordt uitgevoerd. In deze sectie wordt het instellen van de HTTP Basic-verificatie niet besproken. Dit wordt besproken in Beveiligde communicatie met Apache.

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. Inschakelen mod_proxy als volgt:

    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-terminal
    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

In deze sectie wordt besproken hoe u communicatie tussen Apache en de zoekmachine kunt beveiligen met HTTP Basic verificatie met 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

Ga eerst na of je de Apache hebt htpasswd Het hulpprogramma wordt als volgt geïnstalleerd:

  1. Voer de volgende opdracht in om te bepalen of htpasswd is al geïnstalleerd:

    code language-bash
    which htpasswd
    

    Als een pad wordt weergegeven, wordt het geïnstalleerd; als de opdracht geen uitvoer retourneert, htpasswd is niet geïnstalleerd.

  2. Indien nodig, installeren 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:

    • 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 de naam magento_elasticsearch in dit voorbeeld
  • <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: uitsnijden
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

In deze sectie wordt beschreven hoe u de installatie instelt HTTP Basic-verificatie. 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 hebt toegevoegd aan uw beveiligde virtuele host, verwijdert u Listen 8080 en de <VirtualHost *:8080> aanwijzingen die u eerder hebt toegevoegd aan uw onveilige virtuele host.

  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 om te verifiëren moet u een gebruikersbenaming en wachtwoord ingaan om clusterstatus te krijgen
  • HTTP Basic-verificatie configureren in de beheerfunctie

Een curl bevel om 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 worden besproken Configuratie van zoekmachine behalve klikken Yes van de Enable HTTP Auth en voer uw gebruikersnaam en wachtwoord in de opgegeven velden in.

Klikken Test Connection om ervoor te zorgen dat 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