Я недавно отозвал / очистил сертификат агента Puppet, и это, похоже, оказывает негативное влияние на PuppetDB. Я вижу, что была зарегистрирована ошибка Вот с некоторыми инструкциями по устранению проблемы. У пользователя была аналогичная проблема Вот, но у меня ничего из этого не работает.
На сервере работает CentOS 6.2, Puppet 2.7.13 и Puppet DB 0.9. Ошибка:
root@harp:/etc/puppetdb/ssl> puppet agent --test
err: Cached facts for harp failed: Failed to find facts from PuppetDB at harp.mydomain.com:8081: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed. This is often because the time is out of sync on the server or client
info: Loading facts in /etc/puppet/modules/dns/lib/facter/datacenter.rb
info: Caching facts for harp
err: Could not send report: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed. This is often because the time is out of sync on the server or client
err: Could not run Puppet configuration client: Could not retrieve local facts: Failed to submit 'replace facts' command for harp to PuppetDB at harp.mydomain.com:8081: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed. This is often because the time is out of sync on the server or client
NTP работает правильно, насколько я вижу, и дата и время выглядят хорошо. «арфа» на самом деле является главным сервером марионетки, поэтому здесь не должно быть проблем со временем между агентом и сервером, поскольку они одинаковы.
Старый сертификат:
root@harp:/etc/puppetdb/ssl> puppet cert list --all
+ harp (DF:8F:65:36:58:4C:DE:66:2B:65:D1:E6:18:B7:F2:33)
Очистите и создайте новый сертификат для агента:
root@harp:/etc/puppetdb/ssl> puppet cert clean harp
notice: Revoked certificate with serial 18
notice: Removing file Puppet::SSL::Certificate harp at '/var/lib/puppet/ssl/ca/signed/harp.pem'
notice: Removing file Puppet::SSL::Certificate harp at '/var/lib/puppet/ssl/certs/harp.pem'
notice: Removing file Puppet::SSL::CertificateRequest harp at '/var/lib/puppet/ssl/certificate_requests/harp.pem'
notice: Removing file Puppet::SSL::Key harp at '/var/lib/puppet/ssl/private_keys/harp.pem'
root@harp:/etc/puppetdb/ssl> puppet agent --test
info: Creating a new SSL key for harp
warning: peer certificate won't be verified in this SSL session
warning: peer certificate won't be verified in this SSL session
info: Creating a new SSL certificate request for harp
info: Certificate Request fingerprint (md5): 72:5E:99:6A:DE:B0:76:BD:1A:7D:FD:DC:A9:E8:71:AD
warning: peer certificate won't be verified in this SSL session
warning: peer certificate won't be verified in this SSL session
warning: peer certificate won't be verified in this SSL session
Exiting; no certificate found and waitforcert is disabled
root@harp:/etc/puppetdb/ssl> puppet cert list
harp (72:5E:99:6A:DE:B0:76:BD:1A:7D:FD:DC:A9:E8:71:AD)
root@harp:/etc/puppetdb/ssl> puppet cert sign harp
notice: Signed certificate request for harp
notice: Removing file Puppet::SSL::CertificateRequest harp at '/var/lib/puppet/ssl/ca/requests/harp.pem'
root@harp:/etc/puppetdb/ssl> puppet cert list --all
+ harp (4A:D4:90:87:15:1B:D3:FD:A8:15:D9:C0:FB:08:5C:79)
root@harp:/etc/puppetdb/ssl> service puppetdb restart
Stopping puppetdb: /etc/init.d/puppetdb: line 77: kill: (8623) - No such process
[FAILED]
Starting puppetdb: [ OK ]
Хорошо, тогда перезапустите снова для хорошей меры:
root@harp:/etc/puppetdb/ssl> service puppetdb restart
Stopping puppetdb: [ OK ]
Starting puppetdb: [ OK ]
Запустить Сценарий настройки SSL
root@harp:/etc/puppetdb/ssl> /usr/sbin/puppetdb-ssl-setup
cp: cannot stat `/var/lib/puppet/ssl/certs/harp.pem': No such file or directory
root@harp:/etc/puppetdb/ssl> ls -la /var/lib/puppet/ssl/certs
total 12
drwxr-xr-x 2 puppet root 4096 Jun 19 07:19 ./
drwxrwx--x 8 puppet root 4096 Apr 24 10:04 ../
-rw-r--r-- 1 puppet root 1854 Apr 24 10:04 ca.pem
Хорошо, попробуйте еще раз для хорошей меры:
root@harp:/etc/puppetdb/ssl> /usr/sbin/puppetdb-ssl-setup
Certificate was added to keystore
Usage: pkcs12 [options]
where options are
-export output PKCS12 file
-chain add certificate chain
-inkey file private key if not infile
-certfile f add all certs in f
-CApath arg - PEM format directory of CA's
-CAfile arg - PEM format file of CA's
-name "name" use name as friendly name
-caname "nm" use nm as CA friendly name (can be used more than once).
-in infile input filename
...snip...
-CSP name Microsoft CSP name
-LMK Add local machine keyset attribute to private key
Не похоже, что хранилища ключей в / etc / puppetdb / ssl были изменены / восстановлены. На этом этапе выполняется puppet agent --test
приводит к тем же ошибкам, и перезапуск puppet и puppetdb не помогает.
Информация о хранилище ключей:
root@harp:/etc/puppetdb/ssl> keytool -list -keystore /etc/puppetdb/ssl/keystore.jks
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
harp.mydomain.com, May 25, 2012, PrivateKeyEntry,
Certificate fingerprint (MD5): 06:A8:D3:2A:70:F3:6D:34:62:91:45:22:8A:C4:A8:86
root@harp:/etc/puppetdb/ssl> keytool -list -keystore /etc/puppetdb/ssl/truststore.jks
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
puppetdb ca, May 25, 2012, trustedCertEntry,
Certificate fingerprint (MD5): 13:AD:D8:BC:42:40:47:BB:D2:5C:ED:3C:D1:78:26:88
root@harp:/etc/puppetdb/ssl> puppet cert --fingerprint ca harp.mydomain.com
ca 13:AD:D8:BC:42:40:47:BB:D2:5C:ED:3C:D1:78:26:88
err: Could not call fingerprint: Could not find a certificate or csr for harp.mydomain.com
root@harp:/etc/puppetdb/ssl> puppet cert --fingerprint ca harp
ca 13:AD:D8:BC:42:40:47:BB:D2:5C:ED:3C:D1:78:26:88
harp 4A:D4:90:87:15:1B:D3:FD:A8:15:D9:C0:FB:08:5C:79
Как я могу заставить хранилище ключей puppetdb регенерировать? Я попытался удалить файлы в / etc / puppetdb / ssl /, но безуспешно.
Я получил это, но не могу точно сказать, какие шаги были необходимы или нет.
Эта проблема возникла из-за того, что проверка подлинности на нескольких узлах была медленной или зависала и, по-видимому, была связана с проблемами контроллера домена / кеша DNS. Удаление domain mydomain.com
вход из /etc/resolv.conf
на мастере марионеток и агенты решили проблему, но это создало проблемы с существующими сертификатами марионеток. Я побежал puppet cert clean --all
на мастере, чтобы попытаться воссоздать все сертификаты, но это не помогло PuppetDB.
Решение
Очистите старые сертификаты на мастере:
puppet cert clean --all
Удалите старые сертификаты на всех агентах:
rm -rf /var/lib/puppet/ssl
Восстановите хранилища ключей PuppetDB:
facter fqdn
недоступен после удаления domain foo.com
из /etc/resolv.conf
. Это вызывает puppetdb-ssl-setup
потерпеть неудачу тихо.
редактировать /usr/sbin/puppetdb-ssl-setup
добавьте фрагмент кода, чтобы использовать facter hostname
если facter fqdn
пусто:
# near line 10
fqdn=`facter fqdn`
# add this "if" section
if [ ! -n "$fqdn" ] ; then
fqdn=`facter hostname`
fi
Исправление разрешений:
chown -R puppetdb:puppetdb /etc/puppetdb/ssl
Обновите пароли в /etc/puppetdb/conf.d/jetty.ini с новым паролем хранилища ключей / доверенного сертификата (тот же проход), который вы можете получить из:
cat /etc/puppetdb/ssl/puppetdb_keystore_pw.txt
Перезапустите puppetdb
service puppetdb restart
Затем перейдите к каждому агенту, запросите новые сертификаты и подпишите каждый на главном сервере.
Это также происходит, когда у вас слишком низкие настройки памяти для puppetdb.
vim /etc/default/puppetdb
Отредактируйте строку
JAVA_ARGS="-Xmx192m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/puppetdb/puppetdb-oom.hprof -Djava.security.egd=file:/dev/urandom"
должен стать
JAVA_ARGS="-Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/puppetdb/puppetdb-oom.hprof -Djava.security.egd=file:/dev/urandom"
и перезапустите puppetdb
sudo service puppetdb restart
Была аналогичная проблема. Решение:
1.) удалите pid-файл pe-puppetdb на главном сервере 2.) остановите службу pe-puppetdb на главном сервере 3.) запустите службу pe-puppetdb на главном сервере, подождите 30 секунд.
У меня была аналогичная проблема после обновления мастера марионеток (включая puppetdb с 1.6.3 до 2.3.8) с 3.7.x до 3.8.x и появилось следующее сообщение об ошибке:
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to submit 'replace facts' command for puppet-client to PuppetDB at puppetmaster:8081: Connection refused - connect(2)
Решением для этого было, с одной стороны, перезапуск puppetdb, а с другой - также перезапуск клиента марионеточного агента. После этого агент смог продолжить свою работу.