Puppet Agent Zertifikat überprüfen Fehler

10

Ich habe einen Puppet Master / Agent eingerichtet und das Zertifikat für den Agenten auf dem Master erfolgreich signiert. Beim Ausführen wird puppet agent --testjedoch ein Fehler angezeigt, der folgendermaßen aussieht:

Warning: Unable to fetch my node definition, but the agent run will continue:  
Warning: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com]  
Info: Retrieving plugin  
Error: /File[/var/lib/puppet/lib]: Failed to generate additional resources using 'eval_generate: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com]  
Error: /File[/var/lib/puppet/lib]: Could not evaluate: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com] Could not retrieve file metadata for puppet://hostname.domain.com/plugins: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com]  
Error: Could not retrieve catalog from remote server: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com]  
Warning: Not using cache on failed catalog   
Error: Could not retrieve catalog; skipping run  
Error: Could not send report: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com]  

Das hostname.domain.comist der Meister

Wie behebe ich das? Ich habe sichergestellt, dass beide Uhren zur richtigen Zeit in derselben Zeitzone sind. Ich habe alles im Agentenverzeichnis gelöscht /var/lib/puppet/sslund bin zurückgetreten. Ich weiß nicht, was ich sonst tun soll.

John Smith
quelle
Ihr Master scheint ein anderes Zertifikat zu verwenden als Ihr Client vertraut? Hat sich das Master-Zertifikat geändert?
Shane Madden
@ShaneMadden Ich glaube nicht ... sollte ich die Master- und Client-Zertifikate bereinigen und widerrufen? Ich habe überhaupt nicht mit den Master-Zertifikaten herumgespielt, aber so sieht die Ausgabe von "Puppet Cert List --all" aus: + "masterhost.domain.com" (SHA1) E1: F7: 6A: 21: CB: CD: xx: xx: xx: xx ... + "agenthost.domain.com" (SHA256) 5A: D9: 7B: 96: 0B: FF: E4: 87: 58: AF: 00: xx: xx: xx : xx ..
John Smith
Und das masterhost.domain.comist das gleiche wie hostname.domain.comin Ihrer Frage, oder? Versuchen wir dies, wir werden sehen, ob die Zertifikate manuell überprüft werden. Führen Sie openssl s_client -connect masterhost.domain.com:8140 -showcertsdie Zertifikatdaten aus und kopieren Sie sie (beginnt mit -----BEGIN CERTIFICATE-----dieser Zeile und der Endzertifikatzeile) in eine neue Datei. Führen Sie sie dann aus openssl verify -CAfile /var/lib/puppet/ssl/certs/ca.pem /path/to/file/from/last/commandund prüfen Sie, ob sie überprüft werden.
Shane Madden
@ShaneMadden Es scheint, als ob etwas nicht stimmt ... Als ich den Befehl "-showcerts" ausführte, gab es mir zwei "Start" - und "End" -Zertifikate, also habe ich versucht, zuerst eines davon zu einer neuen Datei hinzuzufügen, und bekam dies: / var / lib / puppet / ssl / ca / ​​test: /CN=masterhost.domain.com Fehler 7 bei 0 Tiefensuche: Zertifikatssignaturfehler 22297: Fehler: 0407006A: rsa-Routinen: RSA_padding_check_PKCS1_type_1: Blocktyp ist nicht 01: rsa_pk1.c: 100: 22297: Fehler: 04.067.072: RSA - Routinen: RSA_EAY_PUBLIC_DECRYPT: padding Prüfung fehlgeschlagen: rsa_eay.c: 697: 22297: Fehler: 0D0C5006: asn1 kodierend Routinen: ASN1_item_verify: EVP lib: a_verify.c: 173:
John Smith
Das ist seltsam. Es hört sich so an, als würde das Stammzertifikat zusätzlich zum Serverzertifikat in der Verbindung gesendet. Vergleichen Sie also möglicherweise einfach den Inhalt des zweiten Zertifikats -showcertsmit dem Inhalt von /var/lib/puppet/ssl/certs/ca.pem- sollten sie identisch sein?
Shane Madden

Antworten:

13

Erstellen Sie das gesamte Client-Zertifikat-Setup neu. Dies hat immer alle Zertifizierungsprobleme behoben, die wir in der Vergangenheit hatten. Bei der folgenden Anweisung wird davon ausgegangen, dass der Hostname Ihres Agenten agenthost.hostname.com lautet

Löschen Sie auf dem Client alle gespeicherten Zertifikate, einschließlich der Zertifizierungsstelle:

find /var/lib/puppet/ssl -name '*.pem' -delete

Löschen Sie auf dem Master alle ausstehenden CSRs oder alten Client-Zertifikate für diesen Client:

find /var/lib/puppet/ssl -name agenthost.domain.com.pem -delete

Stellen Sie dann auf dem Client erneut eine Verbindung zum Master her und senden Sie eine CSR:

puppet agent -t --waitforcert=60

und wenn es wartet (wenn Sie das automatische Signieren nicht aktiviert haben), genehmigen Sie auf dem Master die CSR, damit ein neues Client-Zertifikat zurückgesendet wird:

puppet cert sign agenthost.domain.com

Dadurch sollte der Agent die Puppet-CA-Zertifikate erneut herunterladen und erneut ein eigenes Zertifikat beantragen.

Wir mussten dieses Verfahren in der Vergangenheit anwenden, als wir die Puppet-Server und die CA-Zertifikate geändert haben oder wenn wir einen Host mit demselben Hostnamen neu erstellt haben.

Stellen Sie sicher, dass Ihr Agent seinen wirklich vollqualifizierten Hostnamen kennt. Verwenden Sie den Befehl 'hostname', um sicherzustellen, dass er Ihren Erwartungen entspricht.

Steve Shipway
quelle
3
Auf Master puppet cert clean ‘agentName’arbeitet für mich. RHL Puppet Enterprise SSL-Standort : /etc/puppetlabs/puppet/ssl. Und ich habe die Zeit zwischen Master und Agent synchronisiert.
Ivan Chau
Puppet Enterprise und das neuere Puppet 4 speichern ihre Zertifikate wie oben erwähnt unter / etc / puppetlabs / puppet / ssl. Der Speicherort / var / lib / puppet / ssl ist für die Community-Editionen Puppet 2.x und 3.x vorgesehen.
Steve Shipway
6

Ich habe ein ähnliches Problem. Ich habe mit einem Puppenspieler und mehreren Kunden eine vagabundierende Umgebung eingerichtet. Das Problem ist, wenn ich den Puppenmeister zerstöre und erschaffe, erkennen Kunden den neuen Puppenmeister als Betrüger.

Das Löschen /etc/puppet/sslauf dem Client löst das Problem.

Denken Sie daran, dass Ihre SSL-Konfiguration zwischengespeichert wird, sodass ein Neustart des Puppet Masters erforderlich ist, wenn Sie Ihre auch /etc/puppet/sslauf diesem Host löschen möchten :

sudo /etc/init.d/puppetmaster restart
adrianlzt
quelle
service puppetserver restart
reparierte