Zeichen konnte nicht angerufen werden: Zertifikatanforderung für Puppe konnte nicht gefunden werden

7

Ich beginne mit Puppet auf ec2 anhand der folgenden Anleitung.

https://help.ubuntu.com/12.04/serverguide/puppet.html

Im allerletzten Schritt, wenn ich versuche, den Puppen-Client vom Puppenmeister zu signieren, erhalte ich die folgende Fehlermeldung

root@ip-10-248-27-66:/home/ubuntu# puppetca --sign ec2-54-245-56-210.us-west-2.compute.amazonaws.com
err: Could not call sign: Could not find certificate request for ec2-54-245-56-210.us-west-2.compute.amazonaws.com

Hier ist die Ausgabe des /etc/hostsPuppenmeisters

127.0.0.1 localhost puppetmaster
10.248.34.162 ec2-54-245-56-210.us-west-2.compute.amazonaws.com puppet

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Hier ist die Ausgabe von /etc/hostsauf dem Puppen-Client

127.0.0.1 localhost
10.248.27.66 ec2-50-112-220-110.us-west-2.compute.amazonaws.com puppetmaster

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Ich habe den Rat zur Fehlerbehebung hier https://serverfault.com/a/388973/85577 befolgt

Läuft der Master?

root@ip-10-248-27-66:/home/ubuntu# service puppetmaster status
 * master is running

Wird der Hostname "Puppet" oder "Puppet.abc.com" vom Agenten aufgelöst?

Wie würde ich das überprüfen? Telnet ich einfach puppetmasteran Port 8140 (der Host-Befehl löst es nicht auf, der Telnet-Befehl jedoch)?

root@ip-10-248-34-162:/home/ubuntu# host puppetmaster
Host puppetmaster not found: 3(NXDOMAIN)

Ist der TCP-Port 8140 auf dem Master vom Agenten aus erreichbar (versuchen Sie: Telnet Puppet 8140)?

root@ip-10-248-34-162:/home/ubuntu# telnet puppetmaster 8140
Trying 10.248.27.66...
Connected to ec2-50-112-220-110.us-west-2.compute.amazonaws.com.
Escape character is '^]'.

Was sagt Syslog auf dem Agenten?

Apr 11 17:57:41 ip-10-248-34-162 puppet-agent[3897]: Could not request certificate: getaddrinfo: Name or service not known

Versuchen Sie es mit Puppet Agent - Test auf dem Agenten, der versucht, eine Verbindung zum Master herzustellen, und im Vordergrund bleibt, um die Ausgabe anzuzeigen.

root@ip-10-248-34-162:/home/ubuntu# puppet agent --test
err: Could not request certificate: getaddrinfo: Name or service not known
Exiting; failed to retrieve certificate and waitforcert is disabled

BEARBEITEN

Vielen Dank, dawud, damit die Einträge in /etc/hostsdiesem Befehl korrekt sind

$ getent hosts puppetmaster
10.248.27.66 ec2-50-112-220-110.us-west-2.compute.amazonaws.com puppetmaster

Wenn ich dies jedoch versuche, wird eine Fehlermeldung angezeigt

$ puppet agent --test --waitforcert 5
err: Could not request certificate: Connection refused - connect(2)
err: Could not request certificate: Connection refused - connect(2)
user784637
quelle

Antworten:

11

Überprüfen Sie, ob sowohl der Puppetmaster als auch der Client-Computer den vollqualifizierten Domänennamen des Puppetmasters auflösen können. Damit dies funktioniert, müssen Sie die Puppetmaster-IP auf /etc/hostsbeiden Computern zu Ihrer hinzufügen und diese dann überprüfen, indem Sie:

$ ping puppetmaster oder $ getent hosts puppetmaster

Überprüfen Sie, ob Sie den Puppenspieler vom Client-Computer aus erreichen können

$ telnet puppetmaster 8140

Wenn der Server die Verbindung verweigert, überprüfen Sie, ob der Port im Puppetmaster geöffnet ist

# iptables -L -n -v

Oder fügen Sie eine Regel hinzu, um eingehenden Datenverkehr zu diesem Port zuzulassen (dies hängt davon ab, wie iptablesbereits konfiguriert).

# iptables -A INPUT -p tcp --dport 8140 -m state --state NEW -j ACCEPT

Und vom Client ausführen

# puppet agent --test --waitforcert 5

Danach vom Puppenmeister

# puppet cert list

Wenn Sie das Zertifikat anzeigen, das zum Signieren bereit ist, können Sie überprüfen, ob es zum Client-Computer gehört, und den Fingerabdruck vergleichen. Unterschreib es:

# puppet cert sign $client

Puppetmaster erstellt einen Katalog für den Client und Sie können verfolgen, wie er in der Client-Konsole angewendet wird.

Um die Zertifikate auf dem Puppenmeister neu zu generieren, stoppen Sie den Puppenmeister und

# find $(puppet master --configprint ssldir) -name "$(puppet master --configprint certname).pem" -delete

Wenn Sie den Puppenmeister erneut starten, wird das Zertifikat für Sie neu generiert.

Auf der Clientseite reicht es normalerweise aus, die Inhalte des ssldir zu entfernen. /var/lib/puppet/sslÜberprüfen Sie dies jedoch beim nächsten Aufruf wie oben beschrieben

# puppet agent --test --waitforcert 5

es wird neu erstellt.

Überprüfen Sie schließlich die CN des Zertifikats des Puppenmeisters mit

# puppet cert list --all

und ordnen Sie einen der Namen / ALT-Namen dem Eintrag in Ihrem / etc / hosts zu.

dawud
quelle
Danke dawud, ich habe den Puppenspieler /etc/hostsauf beiden Maschinen so hinzugefügt 10.248.27.66 ec2-50-112-220-110.us-west-2.compute.amazonaws.com puppetmaster, dig puppetmasteraber nicht gelöst. Nur dig ec2-50-112-220-110.us-west-2.compute.amazonaws.comEntschlüssen. Außerdem wird ein Syntaxfehler angezeigt # puppet agent --test --waitforcert. Irgendwelche Ratschläge zum weiteren Vorgehen?
user784637
Ich habe die Syntax des Befehls korrigiert, auch versuchen pingoder getentdie Puppenmeisteradresse aufzulösen
dawud
Danke dawud, ich erhalte immer noch eine Fehlermeldung. Können Sie meine Bearbeitung sehen (ich habe die Fehlermeldungen am Ende meiner ursprünglichen Frage hinzugefügt)? Könnte es sich um ein Problem beim Signieren eines privaten Schlüssels handeln?
user784637
Neue Bearbeitung, bitte überprüfen
dawud
Ich kann über Port 8140 vom Client in den Puppet Master telneten und mit getent auflösen (siehe Originalbeitrag). Ich erhalte jedoch immer noch genau den gleichen Fehler err: Could not request certificate: Connection refused - connect(2)beim Ausführen $ puppet agent --test --waitforcert 5. Irgendwelche Ideen, was ich sonst noch versuchen könnte?
user784637
1

Eines der Dinge, die in der Diskussion hier erwähnt und in der vorherigen nicht erwähnt wurden, ist die Antwort, dass sich Ports manchmal seltsam verhalten können. In meinem Fall wurde trotz des Öffnens des Ports 8140 in iptables die Fehlermeldung angezeigt, dass keine Verbindung hergestellt werden konnte. Was mir geholfen hat, sind folgende Befehle:

iptables -F
service service iptables save

Verwenden Sie natürlich, sudowenn der obige Befehl bei Ihrem Benutzer fehlschlägt. Ich habe sogar die beiden oben genannten Befehle in das Provisionoing-Skript der Box eingefügt, damit die iptables gelöscht werden, wenn ich die Boxen anhalte / neu erstelle.

vishal.biyani
quelle
Die obige Antwort scheint richtig zu sein, wenn Sie ein Netzwerkproblem haben und kein Problem im Zusammenhang mit der Installation und Konfiguration von Puppets.
Es ist nicht leer
0

Ich hatte die gleichen Probleme und löste sie mit verschiedenen Verbesserungen.

Gleicher Fehler:

[root@puppetclient puppet]# puppet agent --server yogesh.puppet.com
--no-daemonize --verbose Error: Could not request certificate: Connection refused - connect(2) for "yogesh.puppet.com" port 8140 Error: Could not request certificate: Connection refused - connect(2) for "yogesh.puppet.com" port 8140 Error: Could not request certificate: Connection refused - connect(2) for "yogesh.puppet.com" port 8140 Error: Could not request certificate: Connection refused - connect(2) for "yogesh.puppet.com" port 8140

Ich habe alles versucht, was Iptables, Ports, Firewalls, die Neuinstallation von Agenten (nicht Master). Dann fing ich an, mehr zu suchen und fand etwas in den Protokolldateien als:

I, [2016-04-27T23:21:55.118997 #1745]  INFO -- : activemq.rb:139:in `on_ssl_connecting' Establishing SSL session with stomp+ssl://[email protected]:61613
E, [2016-04-27T23:21:55.131678 #1745] ERROR -- : activemq.rb:149:in `on_ssl_connectfail' SSL session creation with stomp+ssl://[email protected]:61613 failed: SSL_CTX_use_PrivateKey: key values mismatch
I, [2016-04-27T23:21:55.132438 #1745]  INFO -- : activemq.rb:129:in `on_connectfail' TCP Connection to stomp+ssl://[email protected]:61613 failed on attempt 36
I, [2016-04-27T23:22:25.141892 #1745]  INFO -- : activemq.rb:139:in `on_ssl_connecting' Establishing SSL session with stomp+ssl://[email protected]:61613
E, [2016-04-27T23:22:25.144644 #1745] ERROR -- : activemq.rb:149:in `on_ssl_connectfail' SSL session creation with stomp+ssl://[email protected]:61613 failed: SSL_CTX_use_PrivateKey: key values mismatch
I, [2016-04-27T23:22:25.144836 #1745]  INFO -- : activemq.rb:129:in `on_connectfail' TCP Connection to stomp+ssl://[email protected]:61613 failed on attempt 37

Dies gab mir den Hinweis auf Zertifikate, die auf dem Master-Server vorhanden waren. Ich habe den Hauptschlüssel neu erstellt und es hat bei mir funktioniert.

Achtung: Dies war die einzige Testumgebung für mich. Spielen Sie nicht direkt damit in Produktionsumgebungen.

[root@YogeshRaheja init.d]# puppet cert clean "yogesh.puppet.com"
Notice: Revoked certificate with serial 11
Notice: Removing file Puppet::SSL::Certificate yogesh.puppet.com at '/etc/puppetlabs/puppet/ssl/ca/signed/yogesh.puppet.com.pem'
Notice: Removing file Puppet::SSL::Certificate yogesh.puppet.com at '/etc/puppetlabs/puppet/ssl/certs/yogesh.puppet.com.pem'
Notice: Removing file Puppet::SSL::CertificateRequest yogesh.puppet.com at '/etc/puppetlabs/puppet/ssl/certificate_requests/yogesh.puppet.com.pem'
Notice: Removing file Puppet::SSL::Key yogesh.puppet.com at '/etc/puppetlabs/puppet/ssl/private_keys/yogesh.puppet.com.pem'


[root@YogeshRaheja init.d]# puppet cert generate yogesh.puppet.com
Notice: yogesh.puppet.com has a waiting certificate request
Notice: Signed certificate request for yogesh.puppet.com
Notice: Removing file Puppet::SSL::CertificateRequest yogesh.puppet.com at '/etc/puppetlabs/puppet/ssl/ca/requests/yogesh.puppet.com.pem'
Notice: Removing file Puppet::SSL::CertificateRequest yogesh.puppet.com at '/etc/puppetlabs/puppet/ssl/certificate_requests/yogesh.puppet.com.pem'


[root@YogeshRaheja init.d]# ./pe-puppetserver start
Starting pe-puppetserver:                                  [  OK  ]
[root@YogeshRaheja init.d]#
[root@YogeshRaheja init.d]#
[root@YogeshRaheja init.d]# netstat -an | grep -i listen
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:5432                0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN
tcp        0      0 :::4433                     :::*                        LISTEN
tcp        0      0 :::8081                     :::*                        LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
tcp        0      0 ::1:631                     :::*                        LISTEN
tcp        0      0 :::5432                     :::*                        LISTEN
tcp        0      0 ::1:25                      :::*                        LISTEN
tcp        0      0 :::42632                    :::*                        LISTEN
tcp        0      0 :::8140                     :::*                        LISTEN
tcp        0      0 :::61613                    :::*                        LISTEN

und es löste das Clientverbindungsproblem.

Yogesh Raheja
quelle