Comment installer Elasticsearch sur Ubuntu 22.04 avec SSL. Elasticsearch 8 est une puissante solution évolutive de recherche et d'analyse de données distribuées en temps réel. Ici, vous apprendrez à configurer SSL sur votre installation Elasticsearch avec le proxy inverse Nginx sur Ubuntu 22.04.
Vous allez créer un sous-domaine pour votre service Elasticsearch et installer un certificat SSL Let's Encrypt gratuit à l'aide de Certbot.
Cette configuration est testée sur Google Cloud Platform exécutant Ubuntu 22.04 LTS. Ce guide fonctionnera donc parfaitement sur d'autres fournisseurs de services cloud comme AWS, Azure ou tout VPS ou serveurs dédiés.
Prérequis
- Un serveur avec au moins 2 Go de RAM et 2 vCPU
- Un utilisateur avec des privilèges sudo.
Configuration initiale du serveur
Commencez par mettre à jour les progiciels du serveur vers la dernière version disponible.
sudo apt update sudo apt upgrade
Configurer le sous-domaine
Assurez-vous d'utiliser un sous-domaine pour accéder à votre installation Elasticsearch.
Allez dans votre section de gestion DNS et créez un nouveau A
enregistrer avec le nom que vous souhaitez pour votre sous-domaine (par exemple search
) et la valeur de l'adresse IP de votre serveur.
Ainsi, votre sous-domaine ressemblera à celui ci-dessous. Si vous souhaitez configurer votre domaine principal, vous pouvez également le faire.
search.yourdomain.com
Étape 1 :Installez ElasticSearch
Java est déjà inclus dans le package Elasticsearch, vous ne souhaitez donc pas installer Java manuellement. En savoir plus sur l'installation de Java sur Ubuntu 22.04.
Ici, nous allons installer Elasticsearch 8.
Commencez par importer la clé GPG du référentiel Elasticsearch.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
Ajoutez le référentiel à la liste des sources de votre serveur ou système Ubuntu.
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
Mettez à jour la liste des packages et installez ElasticSearch.
sudo apt update sudo apt install elasticsearch
Une fois l'installation terminée, vous recevrez le mot de passe du super utilisateur, veuillez le noter et le sécuriser.
------------------- Security autoconfiguration information ---------------------- Authentication and authorization are enabled. TLS for the transport and HTTP layers is enabled and configured. The generated password for the elastic built-in superuser is : houbJ1uivo5b=aVYYPa5 If this node should join an existing cluster, you can reconfigure this with '/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <token-here>' after creating an enrollment token on your existing cluster. You can complete the following actions at any time: Reset the password of the elastic built-in superuser with '/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic'. Generate an enrollment token for Kibana instances with '/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana'. Generate an enrollment token for Elasticsearch nodes with '/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node'. ---------------------------------------------------------------------------------
Le service Elasticsearch ne démarre pas automatiquement lors de l'installation, vous devez exécuter les commandes ci-dessous pour configurer le service Elasticsearch afin qu'il démarre automatiquement à l'aide de systemd.
sudo systemctl daemon-reload sudo systemctl enable elasticsearch.service sudo systemctl start elasticsearch.service
Une fois Elasticsearch installé, vous pouvez restreindre le port 9200
depuis l'extérieur en éditant le elasticsearch.yml file
et décommentez le network.host
et remplacez la valeur par Internal IP or any IP or localhost
.
sudo nano /etc/elasticsearch/elasticsearch.yml
Donc ça ressemble à ça..
network.host: INTERNAL_IP
Vous pouvez également utiliser localhost
en tant qu'hôte ou toute adresse IP que vous souhaitez.
Tapez Ctrl+X
suivi de Y
et Enter
pour enregistrer le fichier et quitter.
Maintenant, démarrez et activez Elasticsearch au démarrage du serveur.
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
Assurez-vous maintenant que votre service Elasticsearch est en cours d'exécution.
sudo systemctl status elasticsearch
Étape 2 :Vérifiez si Elasticsearch fonctionne
Testez votre installation en envoyant une requête HTTPs en joignant le certificat à l'aide de la commande ci-dessous.
Prenez note du mot de passe que vous avez reçu plus tôt, vous devrez l'utiliser lorsque vous y serez invité.
sudo su curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic https://INTERNAL_IP:9200
Entrez le mot de passe lorsque vous y êtes invité.
Vous recevrez une réponse comme indiqué ci-dessous.
{ "name" : "elasticsearch-vm", "cluster_name" : "elasticsearch", "cluster_uuid" : "vGrj3z4rQEWRBUdd9IhZWA", "version" : { "number" : "8.2.2", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "9876968ef3c745186b94fdabd4483e01499224ef", "build_date" : "2022-05-25T15:47:06.259735307Z", "build_snapshot" : false, "lucene_version" : "9.1.0", "minimum_wire_compatibility_version" : "7.17.0", "minimum_index_compatibility_version" : "7.0.0" }, "tagline" : "You Know, for Search" }
Étape 3 :Installer et configurer Nginx pour Elasticsearch
Il est maintenant temps d'installer et de configurer Nginx. Exécutez la commande ci-dessous pour installer Nginx.
sudo apt install nginx
Vous pouvez maintenant configurer le proxy inverse Nginx depuis votre Elasticsearch.
Supprimer les configurations par défaut
sudo rm /etc/nginx/sites-available/default sudo rm /etc/nginx/sites-enabled/default
Créez un nouveau fichier de configuration Nginx.
sudo nano /etc/nginx/sites-available/search.conf
Collez ce qui suit.
Remarque :Vous devez utiliser exactement le même IP
ou localhost
que vous avez utilisé dans l'hôte de la configuration d'Elasticsearch.
server { listen [::]:80; listen 80; server_name search.yourdomain.com; location / { proxy_pass http://INTERNAL_IP:9200; proxy_redirect off; proxy_read_timeout 90; proxy_connect_timeout 90; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; }
Enregistrez et quittez le fichier.
Activez votre configuration en créant un lien symbolique.
sudo ln -s /etc/nginx/sites-available/search.conf /etc/nginx/sites-enabled/search.conf
Étape 4 :Installez Let's Encrypt SSL
HTTPS est un protocole de communication sécurisée entre un serveur (instance) et un client (navigateur Web). Grâce à l'introduction de Let's Encrypt, qui fournit des certificats SSL gratuits, HTTPS est adopté par tout le monde et donne également confiance à votre public.
sudo apt install python3-certbot-nginx
Maintenant que nous avons installé Certbot by Let's Encrypt pour Ubuntu 22.04, exécutez cette commande pour recevoir vos certificats.
sudo certbot --nginx --agree-tos --no-eff-email --redirect -m [email protected] -d search.domainname.com
Cette commande installera Free SSL, configurera la redirection vers HTTPS et redémarrera le serveur Nginx.
Étape 5 :Renouvellement du certificat SSL
Les certificats fournis par Let's Encrypt sont valides pendant 90 jours seulement, vous devez donc les renouveler souvent. Testons donc la fonctionnalité de renouvellement à l'aide de la commande suivante.
sudo certbot renew --dry-run
Cette commande testera l'expiration du certificat et configurera la fonction de renouvellement automatique.
Préparez-vous à un poste de professionnel des technologies de l'information avec le système d'exploitation Linux
Conclusion
Vous avez maintenant appris à installer Elasticsearch 8 et à le sécuriser avec Let's Encrypt free ssl sur Ubuntu 22.04.
Merci pour votre temps. Si vous rencontrez un problème ou des commentaires, veuillez laisser un commentaire ci-dessous.