Certyfikat agenta marionetkowego weryfikuje niepowodzenie

10

Mam skonfigurowanego Puppet Master / Agent i pomyślnie podpisałem certyfikat agenta na master. Jednak po uruchomieniu puppet agent --testpojawia się błąd, który wygląda następująco:

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]  

hostname.domain.comjest panem

Jak to naprawić? Upewniłem się, że oba zegary są we właściwym czasie w tej samej strefie czasowej, usunąłem wszystko z /var/lib/puppet/sslkatalogu agenta i zrezygnowałem, nie wiem, co jeszcze zrobić.

John Smith
źródło
Wydaje się, że twój mistrz używa innego certyfikatu niż klient ufa? Czy certyfikat kapitana zmienił się?
Shane Madden
@ShaneMadden Nie sądzę, więc ... czy powinienem czyścić i odwoływać certyfikaty master i klientów? W ogóle nie pomieszałem z certyfikatami magisterskimi, ale oto, jak wygląda wynik „listy marionetkowych certyfikatów - wszystkie”: + „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,
I to masterhost.domain.comjest to samo, co hostname.domain.comw twoim pytaniu, prawda? Spróbujmy tego, zobaczymy, czy certyfikaty weryfikują się ręcznie; uruchom openssl s_client -connect masterhost.domain.com:8140 -showcertsi skopiuj dane certyfikatu (zaczyna się od -----BEGIN CERTIFICATE-----, dołącz tę linię i końcową linię certyfikatu) do nowego pliku, a następnie uruchom openssl verify -CAfile /var/lib/puppet/ssl/certs/ca.pem /path/to/file/from/last/commandi sprawdź, czy to zweryfikuje.
Shane Madden,
@ShaneMadden Wygląda na to, że coś jest nie tak… Po uruchomieniu polecenia „-showcerts” dałem mi dwa certyfikaty „start” i „end”, więc najpierw spróbowałem dodać jeden z nich do nowego pliku i this: / var / lib / puppet / ssl / ca / ​​test: /CN=masterhost.domain.com błąd 7 w 0 głębokie wyszukiwanie: błąd podpisu certyfikatu 22297: błąd: 0407006A: procedury rsa: RSA_padding_check_PKCS1_type_1: typ bloku nie jest 01: rsa_pk1.c: 100: 22297: error: 04067072: procedury RSA: RSA_EAY_PUBLIC_DECRYPT: Sprawdź wyściółka failed: rsa_eay.c: 697: 22297: error: 0D0C5006: ASN1 kodowania rutyny: ASN1_item_verify: EVP lib: a_verify.c: 173:
John Smith
To jest dziwne. Wygląda na to, że wysyła główny certyfikat oprócz certyfikatu serwera w połączeniu, więc może po prostu porównaj zawartość drugiego certyfikatu -showcertsz zawartością /var/lib/puppet/ssl/certs/ca.pem- powinny być identyczne?
Shane Madden

Odpowiedzi:

13

Ponownie utwórz całą konfigurację certyfikatu klienta. To zawsze naprawiało wszelkie problemy z certyfikatem, które napotkaliśmy w przeszłości. Poniższa instrukcja zakłada, że ​​nazwa hosta Twojego agenta to agenthost.nazwahosta.com

Na kliencie usuń wszystkie przechowywane certyfikaty, w tym urząd certyfikacji:

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

W systemie głównym usuń wszelkie oczekujące CSR lub stare certyfikaty klienta dla tego klienta:

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

Następnie na kliencie ponownie połącz się z urządzeniem głównym i wyślij CSR:

puppet agent -t --waitforcert=60

a kiedy czeka (jeśli nie włączono automatycznego podpisywania), to na urządzeniu głównym zatwierdzamy CSR, aby nowy certyfikat klienta został odesłany:

puppet cert sign agenthost.domain.com

Powinno to skłonić agenta do ponownego pobrania certyfikatów marionetkowego urzędu certyfikacji i ponownego złożenia wniosku o własny certyfikat.

W przeszłości musieliśmy stosować tę procedurę, kiedy zmieniliśmy serwery lalek i zmieniły się certyfikaty CA, lub kiedy przebudowaliśmy hosta o tej samej nazwie.

Upewnij się, że agent zna swoją prawdziwą, w pełni kwalifikowaną nazwę hosta; użyj polecenia „nazwa hosta”, aby upewnić się, że jest to zgodne z oczekiwaniami.

Steve Shipway
źródło
3
Na Mistrzu, puppet cert clean ‘agentName’działa dla mnie. RHEL Marionetkowego Enterprise SSL lokalizacja: /etc/puppetlabs/puppet/ssl. Zsynchronizowałem czas między Mistrzem a Agentem.
Ivan Chau
Puppet Enterprise i nowszy Puppet 4 przechowują swoje certyfikaty pod / etc / puppetlabs / puppet / ssl, jak wspomniano powyżej. Lokalizacja / var / lib / puppet / ssl dotyczy edycji społeczności Puppet 2.xi 3.x.
Steve Shipway,
6

Mam podobny problem. Stworzyłem włóczęgowskie środowisko z jednym marionetkiem i kilkoma klientami. Problem polega na tym, że kiedy niszczę i tworzę puppetmastera, klienci wykrywają nowego puppetmastera jako oszusta.

Usunięcie /etc/puppet/sslklienta rozwiązuje problem.

Pamiętaj, że twoja konfiguracja ssl zostanie zbuforowana, więc wymagane jest zrestartowanie mastera marionetek , jeśli zdecydujesz się usunąć również /etc/puppet/sslna tym hoście:

sudo /etc/init.d/puppetmaster restart
adrianlzt
źródło
service puppetserver restartnaprawiono to dla mnie
spuder