Сертификат агента кукол подтвердил ошибку

10

У меня настроен Puppet Master / Agent, и я успешно подписал сертификат для агента на master. Однако, когда я бегу, puppet agent --testя получаю ошибку, которая выглядит так:

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.comявляется мастер

Как это исправить? Я удостоверился, что оба часа находятся в правильном времени в одном часовом поясе, я удалил все в /var/lib/puppet/sslкаталоге агента и подал в отставку, я не знаю, что еще делать.

Джон Смит
источник
Кажется, ваш мастер использует сертификат, отличный от доверенного клиента? Изменилось ли свидетельство магистра?
Шейн Мэдден
@ShaneMadden Я так не думаю ... я должен очистить и отозвать сертификаты мастеров и клиентов? Я вообще не перепутал сертификаты мастеров, но вот как выглядит вывод «puppet cert list --all»: + «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 : хх ..
Джон Смит
И это masterhost.domain.comто же самое, что и hostname.domain.comв вашем вопросе, верно? Давайте попробуем это, посмотрим, проверят ли сертификаты вручную; запустите openssl s_client -connect masterhost.domain.com:8140 -showcertsи скопируйте данные сертификата (начинается с -----BEGIN CERTIFICATE-----, включите эту строку и конец строки сертификата) в новый файл, затем запустите openssl verify -CAfile /var/lib/puppet/ssl/certs/ca.pem /path/to/file/from/last/commandи посмотрите, подтвердит ли он.
Шейн Мэдден
@ShaneMadden Кажется, что-то не так .... Когда я запустил команду "-showcerts", она дала мне два сертификата "начало" и "конец", поэтому я попытался сначала добавить один из них в новый файл, и получил это: / var / lib / puppet / ssl / ca / ​​test: /CN=masterhost.domain.com ошибка 7 при поиске глубины 0: ошибка подписи сертификата 22297: ошибка: 0407006A: подпрограммы rsa: RSA_padding_check_PKCS1_type_1: тип блока не 01: rsa_pk1.c: 100: 22297: ошибка: 04067072: ЗГА процедура: RSA_EAY_PUBLIC_DECRYPT: проверка заполнения не удалась: rsa_eay.c: 697: 22297: ошибка: 0D0C5006: ASN1 кодирующей подпрограмм: ASN1_item_verify: EVP Lib: a_verify.c: 173:
Джон Смит
Это странно. Похоже, что он отправляет корневой сертификат в дополнение к сертификату сервера в соединении, поэтому, возможно, просто сравните содержимое второго сертификата -showcertsс содержимым /var/lib/puppet/ssl/certs/ca.pem- они должны быть идентичны?
Шейн Мэдден

Ответы:

13

Повторно создайте полную настройку сертификата клиента. Это всегда исправляло любые проблемы с сертификатом, с которыми мы сталкивались в прошлом. В следующей инструкции предполагается, что имя хоста вашего агента - agenthost.hostname.com

На клиенте удалите все сохраненные сертификаты, включая CA:

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

На главном компьютере удалите все ожидающие CSR или старые клиентские сертификаты для этого клиента:

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

Затем на клиенте переподключитесь к мастеру и отправьте CSR:

puppet agent -t --waitforcert=60

и когда он ожидает (если вы не включили автоподпись), то на мастере утверждают CSR, чтобы отослать новый сертификат клиента:

puppet cert sign agenthost.domain.com

Это должно заставить агента повторно загрузить марионеточные сертификаты CA и повторно подать заявку на собственный сертификат.

Мы должны были использовать эту процедуру в прошлом, когда мы меняли марионеточные серверы и менялись сертификаты CA, или когда мы перестраивали хост с тем же именем хоста.

Убедитесь, что ваш агент знает свое полное имя хоста; используйте команду 'hostname', чтобы убедиться, что это именно то, что вы ожидаете.

Стив Шипвей
источник
3
На Мастер, puppet cert clean ‘agentName’у меня работает. RHEL Puppet Enterprise Ssl местоположение: /etc/puppetlabs/puppet/ssl. И я синхронизировал время между Мастером и Агентом.
Иван Чау
Puppet Enterprise и более новая Puppet 4 хранят свои сертификаты в / etc / puppetlabs / puppet / ssl, как упоминалось выше. Расположение / var / lib / puppet / ssl предназначено для выпусков сообщества Puppet 2.x и 3.x.
Стив Шипвей
6

У меня похожая проблема. Я создал бродячую среду с одним марионеткой и несколькими клиентами. Проблема в том, что когда я уничтожаю и создаю хозяина кукол, клиенты обнаруживают нового хозяина кукол как самозванца.

Удаление /etc/puppet/sslна клиенте решает проблему.

Помните, что ваша конфигурация ssl будет кэширована, поэтому требуется перезапуск мастера Puppet, если вы решите также удалить свой /etc/puppet/sslна этом хосте:

sudo /etc/init.d/puppetmaster restart
adrianlzt
источник
service puppetserver restartисправил это для меня
spuder