Nouveau : le pare-feu IA surveille toute la plateforme et explique chaque incident en termes simples. Découvrez comment ça marche

paho-mqtt sur un Raspberry Pi 3 de laboratoire échoue au handshake TLS avec 'certificate is not yet valid'

paho-mqtt sur un Raspberry Pi 3 de laboratoire échoue au handshake TLS avec 'certificate is not yet valid'

Résolu 7 5

Traduit de English par IA ·

Étudiant ici, premier message. Je réalise un enregistreur d’humidité du sol pour un projet de laboratoire : Pi 3, capteur capacitif via un ADS1115, paho-mqtt 1.6, envoi vers Hermetry sur 8883. Sur mon Wi-Fi personnel, tout fonctionne. Au laboratoire, cela échoue à chaque fois :

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED]
certificate verify failed: certificate is not yet valid (_ssl.c:1006)

Le réseau du laboratoire bloque beaucoup de choses, j’ai donc aussi essayé de me connecter à l’adresse IP du broker au lieu du nom d’hôte (je l’ai résolue chez moi et codée en dur), et l’erreur devient alors une non-correspondance du nom d’hôte. J’ai réinstallé certifi et appelé client.tls_set() avec et sans le chemin ca_certs. Rien n’y fait. Est-ce le pare-feu du laboratoire qui perturbe TLS ?

♥ 0

Traduit de English par IA ·

Le port 8883 est-il seulement ouvert sur ce réseau ? Certains endroits n’autorisent que les ports 80 et 443 en sortie.

♥ 0

Traduit de English par IA ·

Il doit être ouvert, le handshake démarre, il échoue simplement sur le certificat.

♥ 0

Traduit de English par IA ·

Peut-être avez-vous besoin d’un certificat client pour le broker ? Nous avons dû en charger un sur nos PC de ligne.

Ground loops are my cardio.
♥ 0

Traduit de English par IA ·

Qu’affiche date sur le Pi quand vous êtes au labo ?

♥ 2

Traduit de English par IA ·

…il indique mars de l’année dernière. Chez moi, c’est correct.

♥ 0

Traduit de English par IA ·

Voilà, c’est donc ça. Un Pi 3 n’a pas d’horloge temps réel. Au démarrage, il restaure l’heure enregistrée lors de l’extinction propre précédente (fake-hwclock), puis attend NTP. Votre réseau de laboratoire bloque NTP (UDP 123), donc l’horloge reste dans le passé et, pour la bibliothèque TLS, le certificat du serveur n’est pas encore valide. J’ai vu cela sur la moitié des Pi déployés que j’ai mis en service derrière des pare-feu verrouillés.Solutions, à choisir :

# 1. demander à l'informatique le serveur NTP interne et l'utiliser
sudo nano /etc/systemd/timesyncd.conf
  [Time]
  NTP=ntp.your-lab.example
sudo systemctl restart systemd-timesyncd
timedatectl   # "System clock synchronized: yes"

# 2. si seul le port 443 est ouvert : synchroniser via les en-têtes HTTPS
sudo apt install htpdate
sudo htpdate -s https://www.example.org

Supprimez l’IP codée en dur. Le broker nécessite SNI, il faut donc se connecter par nom d’hôte ; le certificat est de toute façon vérifié par rapport à ce nom, ce qui explique la non-correspondance. Un simple client.tls_set() avec le bundle de CA du système convient ; Tyler, aucun certificat client n’est nécessaire pour les connexions par jeton, le serveur en demande un mais ne l’exige pas.Faites aussi attendre au script une horloge synchronisée avant de se connecter, sinon un redémarrage au laboratoire le fera à nouveau échouer. Une boucle simple sur timedatectl show -p NTPSynchronized fonctionne. Voir la section TLS de MQTT.

If it isn't logged, it didn't happen.
Solution acceptée♥ 5

Traduit de English par IA ·

Le service informatique m’a donné le serveur NTP interne, l’horloge est juste, le nom d’hôte est de nouveau renseigné, connexion réussie du premier coup. J’ai aussi ajouté la boucle d’attente de synchronisation dans l’unité systemd. Difficile de croire que c’était la date.

♥ 0
8 sujets de 1 à 8 (sur un total de 8)
  • Vous devez être connecté pour répondre à ce sujet.

Rejoignez la discussion

Connectez-vous pour poser et répondre à des questions, aimer les messages utiles et marquer la réponse qui a résolu votre problème. Chaque contribution rapporte des points et des niveaux.

Partager