Certificat SSL Opensearch / Cortex

Fermé
Lynow - Modifié le 10 févr. 2022 à 11:11
 Lynow - 11 févr. 2022 à 11:27
Bonjour,


Je suis en train de configurer la connexion entre Cortex (outil CTI) et Opensearch (outil de visualisation, fork de Elasticsearch).

Opensearch utilise SSL et Cortex également.

Je pense que je me suis un perdu dans les certificats, c'est pourquoi je bloque sur cette connexion entre les deux outils.

En effet, Cortex demande dans son fichier de configuration un KeyStore, et un TrustStore. J'ai donc généré ces deux-ci dans le format approprié. A savoir que Cortex est compatible avec le format PKS, PKSC#12. Lors de la conversion de PEM en PKS, la commande a créé un keystore et trustore sous l'extension .ks, en espérant que cela soit compatible ...

J'indique également les mots de passes s'il y en a. Voici un peu l'idée :


search {
  # Name of the index
  index = cortex
  # ElasticSearch instance address.
  # For cluster, join address:port with ',': "http://ip1:9200,ip2:9200,ip3:9200"
  uri = "https://192.168.x.x"
}  
....

## Authentication configuration
  user = "user"
  password = "mdp"

  ## SSL configuration
  keyStore {
    path = "/home/certificat-opensearch/keystore.ks"
    type = "JKS" # or PKCS12
    password = "mdp"
  }
  trustStore {
    path = "/home/certificat-opensearch/trustStore.ks"
    type = "JKS"
    #password = ""
  #}


Cela ne fonctionne pas, le service ne démarre pas et je n'ai aucune erreur log affichée ... Que ce soit dans les logs Cortex ou système ...

A noter que j'ai également configuré un proxy inverse pour cortex, afin de configurer une connexion SSL. Pour ces deux outils, je n'ai pas utilisé la même autorité de certificat, je l'ai fait individuellement (pour une certaine raison).

Je pense donc que je me suis emmêler les pinceaux. Si j'ai bien compris, Keystore contient la clé privée qui va permettre à Opensearch de vérifier son identité, et Trustore va permettre de vérifier inversement l’identité de Opensearch.

2 réponses

La situation a un peu évolué, avec cette configuration :

  user = "user"
  password = "mdp"

  ## SSL configuration
  keyStore {
    path = "/home/certificat-opensearch/truststore.ks"
    type = "JKS" # or PKCS12
    password = "mdp"
  }
  trustStore {
    path = "/home/certificat-opensearch/truststore.ks"
    type = "JKS"
    password = "mdp"
  }


Je ne sais pas pourquoi, mais en mettant le fichier truststore pour keystore, cela a fonctionné ... Pourtant, Truststore constitue tous les certificats vérifiés/signés par l'autorité de certification de Opensearch, et keystore la clé et/ou le certificat personnel généré pour cortex ... Alors là ...

Ensuite, j'ai donc accès à la page Web http://192.168.x.x:9001. Ok, le problème est que, je rappel, j'ai créé un proxy reverse avec nginx pour Cortex. Ce proxy renvoie sur l'adresse https://192.168.x.x. J'ai donc accès aux deux pages Web. Je ne vois pas comment faire pour que SSL soit configuré à la fois pour Cortex lui-même et à la fois pour se connecter à Opensearch.

J'espère avoir été clair.
0
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
Modifié le 10 févr. 2022 à 14:13
Bonjour,

Pas besoin d'offusquer les IPs tant qu'elles sont locales (192.168.*.*).

Plusieurs questions :
  • Ça m'étonne un peu que tu n'aies pas d'erreur au moins dans les logs. Es-tu sûr d'avoir regardé bien regardé dans
    /var/log
    ? Par exemple, en utilisant une commande du genre
    sudo tail -f /var/log/*.log
    (laisse ce terminal ouvert, puis teste).
  • Est-ce que tu es sûr que les deux composants arrivent à se joindre au sens IP (teste avec un
    ping -c2 192.168.x.x
    ) ?
  • Est-ce que le ports sont les bons et sont bien ouverts (côté serveur tu peux vérifier avec
    netstat -ntlp
    , côté client avec
    nmap 192.168.x.x
    ) ?
  • Est-ce que ça marche sans certificat ?
  • Peux-tu nous indiquer les liens sur lesquels tu t'es basé ?


Bonne chance
0
Bonjour,

Je ne sais pas si tu as vu mon dernier message plus haut ?

EDIT : J'ai finalement réussi à me connecter avec le proxy, donc en https et avec Opensearch.

Je voudrais juste, si possible, un éclaircissement sur la configuration du Truststore, comment cela se fait-il qu'il doit être mis à la place du Keystore ?

Deuxième chose :

J'ai donc créé un certificat SSL pour la connexion Cortex, https:192.168.1.10, à partir du proxy sous nginx. Lorsque Cortex communique avec Opensearch, il envoie ses configurations SSL du fichier ci-dessus, afin de montrer qu'il a un certificat connu et vérifié par l'autorité, c'est bien cela ?
0
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749 > Lynow
10 févr. 2022 à 15:04
Re bonjour,

Je ne sais pas si tu as vu mon dernier message plus haut ?

En fait je voulais qu'on soit sûrs que ça marche sans certificat pour ne pas avoir à chercher une explication du côté du pare-feu ou du routage.

Je ne vois pas comment faire pour que SSL soit configuré à la fois pour Cortex lui-même et à la fois pour se connecter à Opensearch.

Je ne sais pas si ce que je vais dire va t'aider, car comme je te l'ai dit dans ton autre fil de discussion, je n'ai jamais utilisé les technologies dont tu parles, mais je me lance, avec un peu de chance ça t'aidera :-)

En fait cette partie n'est pas claire. Il n'y a pas vraiment de notion de "à la fois". Dans l'idée tu as une application client (navigateur ou autre) qui se connecte à un serveur. Si la connexion est sécurisée (SSL, HTTPS...) alors le client vérifie que le certificat présenté par le serveur est produit par une autorité de confiance. Donc ma question serait quelle(s) application(s) cliente(s) est(sont) concernée(s), pour contacter quel(s) service(s) et d'après toi pourquoi.

Penses-tu que c'est lié à ton reverse proxy et si oui pourquoi ?

Un élément qui n'a rien à voir avec ton problème mais qui peut t'inspirer. Suppose que tu as deux sites webs hébergé sur une même machine (disons https://www.site1.fr et https://www.site2.fr) avec apache2 + certbot. Tu vas instancier certbot pour https://www.site1.fr et https://www.site2.fr. Le fait qu'ils aient la même IP ne gêne pas. Le serveur apache sait à quel site on s'adresse en analysant le FQDN soumis par le client et retourne les bonnes pages et le bon certificat.

Bonne chance
0
Lynow > mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024
11 févr. 2022 à 11:27
Merci pour ta réponse, cela m'a un peu éclairé.

Je suis maintenant parti sur le pare-feu avec iptables, encore de nouveaux problèmes qui arrivent :)
0