updatengine-ng / updatengine-client

updatengine client allow computer and server to be inventoried automatically on an updatengine server
GNU General Public License v2.0
1 stars 2 forks source link

Certificat valide #2

Open xylle opened 2 years ago

xylle commented 2 years ago

Bonjour,

sur mon serveur updatengine, j'utilise un certificat valide. Le client ne reconnaît pas le certificat. Serait il possible de modifier le code de vérification du certificat pour gérer les certificats valident en plus des auto-signés ?

J'ai fait un script qui vérifie le certificat ( auto-signé ou valide), pour l'intégrer dans le code, il faudrait ajouter la librairie certifi

#!/usr/bin/python3
import ssl
import certifi
import os

# Server address
hostname = "updatengine.example.com";
port = "443";

# Retrieve the server certificate in PEM format
try:
    cert = ssl.get_server_certificate((hostname, port));
    # print(cert);
    print("Certificat serveur trouvé")
except:
    print("Impossible de récupérer le certificat du serveur")

try:
    cert = ssl.get_server_certificate((hostname, port), ssl_version=ssl.PROTOCOL_SSLv23, ca_certs=os.path.relpath(certifi.where()));
    # print(cert);
    print("Certificat validé")
except:
    print("Le certificat n'est pas reconnu par une autorité Officiel")
    try:
        cert = ssl.get_server_certificate((hostname, port), ssl_version=ssl.PROTOCOL_SSLv23, ca_certs="cacert.pem");
        # print(cert);
        print("Le certificat autosigné fournit correspond")
    except:
        print('Le certificat fournit ne correspond pas')
noelmartinon commented 2 years ago

Bonjour, Je reviens vers vous dès que possible (~d'ici fin de semaine) pour répondre à vos différents points. En tout cas, merci pour l'intérêt et les propositions.

noelmartinon commented 2 years ago

Bonjour, Sauf erreur, votre problème n'est pas lié au fait que votre certificat soit validé par une autorité de certification. Ainsi, si vous utilisez directement le cacert.pem qu'utilise le module "certifi" sur la ligne de commande updatengine-client -i -s https://UESERVER -c cacert.pem alors vous ne devriez pas avoir de problème. Vous pouvez ne conserver que la partie qui se rapporte à votre AC. Par exemple, pour api.github.com :

xylle commented 2 years ago

Merci, j'ai compris mon problème.

  1. Serait il possible que le client puisse valider un certificat reconnu par une autorité officielle et valider que cette autorité correspond à l'enregistrement CAA dans le DNS, sans lui fournir de certificat ?
  2. Serait il possible sur le serveur updatengine de faire un menu qui retourne le certificat à utiliser avec le client ?
  3. Comment faites vous pour générer les commentaires du certificat ?

Ajouter le point 1 au client et le point 2 au serveur, simplifierai le travail initial de configuration. Si besoin je peux aider.

noelmartinon commented 2 years ago

Bonjour, La finalité est-elle de s'assurer que le client n'envoie ses données qu'au serveur valide ?

xylle commented 2 years ago

J'y vois la simplification du déploiement et l'amélioration de la sécurité.