Ошибка проверки SSL-сертификата в Puppet - PullRequest
0 голосов
/ 17 января 2019

У меня есть докер-контейнер с марионеточным мастером. Его создали из изображения puppet/puppetserver.

CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                    PORTS                    NAMES
1a3e942655e0        puppet/puppetserver   "dumb-init /docker-e…"   32 minutes ago      Up 32 minutes (healthy)   0.0.0.0:8140->8140/tcp   puppet

Подробности контейнера puppetserver:

Hostname: puppet
FQDN: puppet.openvpn

Агент puppet запускается из бродячей коробки на том же хосте, что и докер. Когда я запускаю puppet agent -td из поля vagrnat, я получаю следующую ошибку -

Info: Creating a new SSL key for localhost.localdomain
Info: csr_attributes file loading from /etc/puppetlabs/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for localhost.localdomain
Info: Certificate Request fingerprint (SHA256): A8:F0:9D:F2:2C:A0:AC:0B:66:55:90:64:64:B2:62:47:7F:DC:F0:18:18:A6:79:C0:BE:1D:00:B6:5E:F4:C3:18
Info: Downloaded certificate for localhost.localdomain from puppetserver
Warning: Unable to fetch my node definition, but the agent run will continue:
Warning: SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate rejected): [ok for /CN=puppet.openvpn]
Info: Retrieving pluginfacts
Error: /File[/opt/puppetlabs/puppet/cache/facts.d]: Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate rejected): [ok for /CN=puppet.openvpn]
Error: /File[/opt/puppetlabs/puppet/cache/facts.d]: Could not evaluate: Could not retrieve file metadata for puppet:///pluginfacts: SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate rejected): [ok for /CN=puppet.openvpn]
Info: Retrieving plugin
Error: /File[/opt/puppetlabs/puppet/cache/lib]: Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate rejected): [ok for /CN=puppet.openvpn]
Error: /File[/opt/puppetlabs/puppet/cache/lib]: Could not evaluate: Could not retrieve file metadata for puppet:///plugins: SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate rejected): [ok for /CN=puppet.openvpn]
Error: Could not retrieve catalog from remote server: SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate rejected): [ok for /CN=puppet.openvpn]
Error: Could not retrieve catalog; skipping run

Сведения о бродячем марионеточном агенте:

Hostname: localhost.localdomain

/ и т.д. / хосты:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.100.2.1 puppetserver

192.100.2.1 -> ip of host machine from within vagrant

/ и т.д. / puppetlabs / кукольный / puppet.conf

[agent]
server = puppetserver

Я могу видеть подписанные сертификаты, сгенерированные для агента vagrant puppet в мастере, а также в журналах при запуске puppet agent -t.

  • Эти сертификаты генерируются неправильно?
  • Какой именно сертификат здесь отклоняется?

1 Ответ

0 голосов
/ 19 января 2019

В соответствии со своей конфигурацией агент использует имя «puppetserver» для идентификации и связи с сервером. Его вывод подтверждает это.

Агент успешно создает CSR, отправляет его на компьютер puppetserver и получает подписанный сертификат. Это показывает, что он успешно связывается с сервером, и есть все основания ожидать, что сервер примет сертификат, который он только что подписал.

По-видимому, проблема в сертификате магистра. Скорее всего, это связано с тем, что машина сервера puppet самоопознается как «puppet.openvpn», так что это, вероятно, имя, для которого выдается сертификат мастера, тогда как агент использует другое имя для связи с мастером. Несоответствие между именем в сертификате и представлением агентом названия машины, с которой он говорит, является хорошей причиной для агента отклонить сертификат.

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

В качестве отдельного вопроса вы также столкнетесь с проблемами при работе с агентами, которые имеют одинаковые имена хостов (то есть localhost.localdomain), если, опять же, вы не позаботитесь о конфигурации их марионеток, чтобы убедиться, что они используют разные , уникальные имена на своих сертификатах. Путь наименьшего сопротивления - дать правильные имена вашим машинам и сделать это до регистрации их с хозяином Puppet.

...