Wie füge ich meinem Puppenspieler mehrere DNS-Namen hinzu?

16

meine puppet.conf über den meister

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

Nach meinem Verständnis mit den definierten Zertifikatsnamen sollte Folgendes funktionieren:

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

aber ich erhalte den folgenden Fehler:

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

Wie vermeide ich diesen Fehler? Wie definiere ich Zertifikatsnamen richtig? Ich habe verschiedene Dokumentationen dazu gefunden, aber kein einfaches Beispiel. ii benutze "," für die Trennung, ich kann überhaupt nicht unterschreiben. Ich habe auch eine Syntax wie gesehen

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

aber für mich ist es nicht klar, wann man eine "Marionette" hinzufügt und wann nicht.

c33s
quelle

Antworten:

25

Für alle anderen, die auf diese Antwort stoßen:

Aufgrund von CVE-2011-3872 unterstützt Puppet die certdnsnamesOption nicht mehr . Aus der Dokumentation:

Die Einstellung certdnsnames ist nach CVE-2011-3872 nicht mehr funktionsfähig. Wir ignorieren den Wert vollständig. Für Ihre eigene Zertifikatsanforderung können Sie in der Konfiguration dns_alt_names festlegen, die dann lokal angewendet werden. Es gibt keine Konfigurationsoption, um DNS-ALT-Namen oder andere subjectAltName-Werte für ein anderes Knotenzertifikat festzulegen. Alternativ können Sie die Befehlszeilenoption --dns_alt_names verwenden, um die Bezeichnungen festzulegen, die beim Generieren Ihrer eigenen CSR hinzugefügt wurden.

Sie können mit subjectAlternativeName ein SSL-Zertifikat für Ihren Server wie folgt generieren:

$ puppet cert generate <puppet master's certname> --dns_alt_names=<comma-separated list of DNS names>
larsks
quelle
3
Zusätzlicher Hinweis: Entfernen Sie vor dem Ausführen von puppet cert generate die PEM-Dateien für den Puppenmaster in / var / lib / puppet / ssl / private_keys, / var / lib / puppet / ssl / ca / ​​signed / und / var / lib / puppet / ssl / certs. Durch das Generieren eines neuen Zertifikats wird die Konnektivität zu vorhandenen Clients nicht beeinträchtigt, da diese das Zertifikat des Puppenmeisters mithilfe des Zertifikats der Zertifizierungsstelle überprüfen, das sie beim ersten Verbindungsaufbau heruntergeladen haben.
Erik Forsberg
9
Hey, danke Lars aus der Vergangenheit. Du hast gerade meine Frage beantwortet.
Larsks
2

Verwenden Sie für Puppet 4+ die folgenden Befehle, um die akzeptierten DNS-Namen für das Puppetserver-Zertifikat zu ändern:

Benennen Sie vorhandene Zertifikate in * .backup um:

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}

neues Zertifikat generieren (fügen Sie Ihre gewünschten alternativen Namen hinzu):

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

Puppetserver neu starten, um neue Zertifikate zu verwenden

service puppetserver restart
phiphi
quelle
1
  • Erstens certdnsnamesist eine durch Doppelpunkte getrennte Liste.
  • Zweitens tritt dieser Fehler auf, weil der Agent den Master unter Verwendung eines Hostnamens kontaktiert, der beim Signieren des Zertifikats nicht angegeben war: http://docs.puppetlabs.com/guides/troubleshooting.html
Quanten
quelle
Es tut mir leid, dass ich diese Antwort nicht akzeptiert habe. Ich hatte ein Übersetzungsproblem mit "Doppelpunkt". Die andere Antwort half mir, indem sie mir einfach das richtige
Zeichen
0

Gemäß

puppet agent --genconfig

Sie müssen eine durch Doppelpunkte getrennte Liste (":" not ";") verwenden.

So sollte es sein

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

HTH

cyberkov
quelle
0

So fügen Sie dem Puppet Server-Zertifikat einen SAN-Eintrag hinzu:

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

Möglicherweise müssen über bestehende Zertifikate löschen rm -rf $(puppet master --configprint ssldir)und

Greg Bray
quelle