Jak dodać wiele nazw DNS do mojego puppetmaster?

16

mój puppet.conf na mistrzu

[master]
certname = myname.mydomain.com
ca_server = myname.mydomain.com
certdnsnames = puppet;puppet.local;myname.dyndns.org;hivemind.local;

dla mojego zrozumienia zdefiniowanych nazw certyfikatów powinny działać:

puppet agent --server myname.dyndns.org --test

ale pojawia się następujący błąd:

err: Could not retrieve catalog from remote server: hostname was not match with the server certificate

jak uniknąć tego błędu? jak poprawnie zdefiniować nazwy certyfikatów? znalazłem inną dokumentację na ten temat, ale nie ma prostego przykładu. ii używam „,” do rozdzielenia, którego w ogóle nie mogę podpisać. widziałem też taką składnię

certdnsnames = puppet:puppet.intra.myserver.fr,puppet.myserver.fr:puppet,puppet:puppet,puppet.intra.myserver.fr,puppet.myserver.fr

http://projects.puppetlabs.com/issues/5776

ale dla mnie nie jest jasne, kiedy dodać „marionetkę”, a kiedy nie.

c33s
źródło

Odpowiedzi:

25

Z korzyścią dla każdego, kto natknie się na tę odpowiedź:

Z powodu CVE-2011-3872 Puppet nie obsługuje już tej certdnsnamesopcji. Z dokumentacji:

Ustawienie certdnsnames nie działa już po CVE-2011-3872. Całkowicie ignorujemy tę wartość. Dla własnego żądania certyfikatu możesz ustawić dns_alt_names w konfiguracji i będzie ono stosowane lokalnie. Nie ma opcji konfiguracji ustawiania nazw alternatywnych DNS ani żadnej innej wartości podmiotuAltName dla innego certyfikatu węzła. Alternatywnie możesz użyć opcji wiersza polecenia --dns_alt_names, aby ustawić etykiety dodane podczas generowania własnego CSR.

Możesz wygenerować certyfikat SSL dla swojego serwera za pomocą subjectAlternativeName w następujący sposób:

$ puppet cert generate <puppet master's certname> --dns_alt_names=<comma-separated list of DNS names>
Larsks
źródło
3
Uwaga dodatkowa: przed uruchomieniem generowania certyfikatu marionetkowego usuń pliki .pem dla mistrza marionetek z / var / lib / puppet / ssl / private_keys, / var / lib / puppet / ssl / ca / ​​podpisany / i / var / lib / puppet / ssl / certs. Generowanie nowego certyfikatu nie niszczy łączności z istniejącymi klientami, ponieważ weryfikują certyfikat lalekmaster za pomocą certyfikatu urzędu certyfikacji, który pobrali przy pierwszym połączeniu.
Erik Forsberg
9
Hej, dzięki Lars z przeszłości. Właśnie odpowiedziałeś na moje pytanie.
larsks
2

W przypadku Puppet 4+ użyj następujących poleceń, aby zmienić akceptowane nazwy DNS dla certyfikatu puppetserver:

Zmień nazwę istniejących certyfikatów na * .backup:

mv /etc/puppetlabs/puppet/ssl/private_keys/$(hostname -f).pem{,.backup}
mv /etc/puppetlabs/puppet/ssl/ca/signed/$(hostname -f).pem{,.backup}
mv /etc/puppetlabs/puppet/ssl/certs/$(hostname -f).pem{,.backup}

wygeneruj nowy certyfikat (dodaj żądane nazwy alternatywne):

puppet cert generate $(hostname -f) --dns_alt_names=$(hostname -f),puppet

zrestartuj puppetserver, aby użyć nowych certyfikatów

service puppetserver restart
phiphi
źródło
1
  • Po pierwsze, certdnsnamesto lista rozdzielona dwukropkami.
  • Po drugie, pojawia się ten błąd, ponieważ agent kontaktuje się z głównym przy użyciu nazwy hosta, która nie została uwzględniona podczas podpisywania certyfikatu: http://docs.puppetlabs.com/guides/troublesh.html
kwanty
źródło
przepraszam, że nie zaakceptowałem tej odpowiedzi, miałem problem z tłumaczeniem słowa „dwukropek”, więc inna odpowiedź pomogła mi, pokazując mi właściwy znak :), ale dziękuję za odpowiedź
c33s 10.10.11
0

Według

puppet agent --genconfig

musisz użyć listy oddzielonej dwukropkami („:” not ”;”).

Tak powinno być

certdnsnames = 'puppet:puppet.local:myname.dyndns.org:hivemind.local'

HTH

cyberkov
źródło
0

Aby dodać wpis SAN do certyfikatu serwera lalek, użyj:

systemctl stop puppetserver
puppetserver ca setup --subject-alt-names $(hostname -f),puppet
systemctl start puppetserver

może trzeba usunąć istniejące certyfikatów poprzez rm -rf $(puppet master --configprint ssldir)jak również

Greg Bray
źródło