Ім'я хоста лялечки не відповідає сертифікату сервера


10

Я намагаюся налаштувати Ubuntu VM із встановленою лялькою, щоб я міг локально протестувати наші виробничі установки. У мене виникають труднощі з тим, щоб з ляльковим майстром та лялькою розмовляти між собою. Дозвольте провести вас своїми кроками. (Сервер hostname- це FQDN формату "web1.xxx.xxx.net").

Отже, по-перше, я очищаю всі файли pem (крім стихій CA, звичайно) з /etc/puppet/sslкаталогу, щоб я міг зробити новий старт. puppetca --listне дає результатів.

Потім я біжу puppetd --testгенерувати КСВ для лялькового майстра. puppetca --listтепер включає моє ім'я хоста ("web1.xxx.xxx.net").

Тоді я біжу puppetca --sign web1.xxx.xxx.net. Тепер puppetca --listзнову порожньо - досі все працює нормально.

Нарешті я puppetd --testзнову бігаю . Я отримую такий вихід:

err: Could not retrieve catalog from remote server: hostname was not match with the server certificate
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run

У списку вмісту /etc/puppet/sslкаталогу відображаються файли PEM з правильним іменем сервера, яке відповідає моєму hostname. У когось є ідеї, як напасти на цю проблему?

Відповіді:


9

Помилка полягає в тому, що клієнт за замовчуванням підключається до імені хоста сервера "маріонетка", але в представленому сертифікаті "лялька" не є ні темою, ні атрибутом SubjectAltName.

Щоб виправити це, ви можете (вибрати один):

  1. замість ініціалізації сертифіката вашого лялькового майстра запуском puppetd, ініціалізуйте його запуском puppetmasterd- це призведе до того, що в назві предмета cert буде включено "лялька".

  2. замість того, щоб залишати речі випадковістю, яку ви можете використовувати puppetca --generate --certdnsnames puppet:puppet.mydomain.com web1.xx.xx.xx.net- опція certdnsnames визначає список SubjectAltNames, які будуть включені в сертифікат; у ньому повинен бути розділений двокрапкою список будь-якого імені, яке клієнт використовуватиме для зв’язку з сервером.

  3. замість того, щоб просто працювати puppetd --testна клієнті, запустіть puppetd --test --server=web1.xx.xx.xx.netтак, щоб ім'я сервера, до якого підключається клієнт, це те, що є насправді в сертифікаті, представленому сервером.

Перевірте прекрасну запис в блозі masterzen для подальшого усунення неполадок: Ляльковий SSL Роз'яснення


3

Ви перевіряли файл журналу лялькових майстрів? Я виявив ту саму проблему і виявив, що сервер записує інформацію про сертифікат:

[2012-02-28 16:21:09] INFO  
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 2 (0x2)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: CN=ca
        Validity
            Not Before: Feb 26 16:32:46 2012 GMT
            Not After : Feb 24 16:32:46 2017 GMT
        Subject: CN=ubuntu.localdomain

Поле "Тема" показує, що CN є "ubuntu.localdomain", тому я виконав маріонетку, роблячи:

puppetd -t --server=ubuntu.localdomain --fqdn=myfqdn

Сподіваюся, це допомагає :-)


2

Окрім того, що відповів Пау, я хотів би лише зазначити, що ви можете перевірити сертифікат лялькових майстрів, використовуючи:

openssl x509 -text -in /var/lib/puppet/ssl/certs/<hostname_of_puppet_master>

Потім переконайтеся, що ви використовуєте точно те саме ім’я хоста, коли від клієнта:

puppetd --server <hostname_of_puppet_master> <etc>

0

Чи можуть обидва сервери вирішувати один одного? Я здогадуюсь, що оскільки ви його VMing, вам може бути відсутнім дозвіл імені. Якщо ви не використовуєте DNS для дозволу серверам вирішувати один одного, вам потрібно додати записи до вашого /etc/hostsфайлу на обох серверах.

Лялькові потрібні імена хостів для встановлення правильних IP-адрес, без цього ви отримаєте вказану вами помилку. Вам може знадобитися відтворити сертифікати після цього. Обидві машини повинні мати можливість пінг кожного з імен хоста.

Ще одна річ, на яку слід бути обережними з VM, це синхронізація часу на серверах. Якщо ви цього не зробите, швидше за все сертифікати будуть недійсними.


Ах, я повинен був уточнити. Puppet та Puppetmaster обидва працюють на одному сервері; мій ВМ. І так, я можу пінг-комп’ютер від себе за допомогою FQDN.
RISCfuture

Вибачте Джошуа, що це неправильно. лялька не робить DNS-> IP-перевірку щодо представленого сертифіката. Це дійсно робить ім'я хоста для перевірки імені certname, що є причиною помилки.
eric sorenson
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.