Drei Maschinen in der Produktionsumgebung hatten einige Hardwareprobleme und wurden stillgelegt. Das Infrastruktur-Team hat sie neu installiert und ihnen dieselben Hostnamen und IP-Adressen zugewiesen. Ziel ist es, Puppet auf diesen Systemen auszuführen, damit diese erneut in Betrieb genommen werden können.
Versuch
1) Die alten Puppet-Zertifikate wurden mit den folgenden Befehlen vom Puppetmaster entfernt:
puppet cert revoke grb16.company.com
puppet cert clean grb16.company.com
2) Nachdem das alte Zertifikat entfernt wurde, wurde eine neue Zertifikatanforderung erstellt, indem der folgende Befehl von einem der neu installierten Knoten ausgegeben wurde:
[root@grb16 ~]# puppet agent -t
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for grb16.company.com
Info: Certificate Request fingerprint (SHA256): 6F:2D:1D:71:67:18:99:86:2C:22:A1:14:80:55:34:35:FD:20:88:1F:36:ED:A7:7B:2A:12:09:4D:F8:EC:BF:6D
Exiting; no certificate found and waitforcert is disabled
[root@grb16 ~]#
3) Sobald die Zertifikatsanforderung auf dem Puppetmaster sichtbar war, wurde der folgende Befehl ausgegeben, um die Zertifikatsanforderung zu signieren:
[root@foreman ~]# puppet cert sign grb16.company.com
Notice: Signed certificate request for grb16.company.com
Notice: Removing file Puppet::SSL::CertificateRequest grb16.company.com at '/var/lib/puppet/ssl/ca/requests/grb16.company.com.pem'
[root@foreman ~]#
Problem
Nachdem die Zertifikatsanforderung signiert und ein Puppet-Lauf gestartet wurde, wird der folgende Fehler ausgegeben:
[root@grb16 ~]# puppet agent -t
Info: Caching certificate for grb16.company.com
Error: Could not request certificate: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
Exiting; failed to retrieve certificate and waitforcert is disabled
[root@grb16 ~]#
Wenn Sie Puppet zum zweiten Mal ausführen, erhalten Sie:
[root@grb16 ~]# puppet agent -t
Warning: Unable to fetch my node definition, but the agent run will continue:
Warning: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
Info: Retrieving pluginfacts
Error: /File[/var/lib/puppet/facts.d]: Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
Error: /File[/var/lib/puppet/facts.d]: Could not evaluate: Could not retrieve file metadata for puppet://foreman.company.com/pluginfacts: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
Wrapped exception:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
Info: Retrieving plugin
Error: /File[/var/lib/puppet/lib]: Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
Error: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve file metadata for puppet://foreman.company.com/plugins: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
Wrapped exception:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
Error: Could not retrieve catalog from remote server: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
Error: Could not send report: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
[root@grb16 ~]#
Analyse
Um das Problem zu beheben, wurde die Fehlermeldung untersucht und es scheint, dass das Problem mit SSL oder Puppet zusammenhängt. Möglicherweise wurde eines dieser Pakete falsch installiert, oder auf dem neu installierten Knoten wurde eine falsche Version installiert.
Marionette
[root@grb16 ~]# yum list installed |grep puppet
facter.x86_64 1:2.3.0-1.el6 @puppetlabs_6_products
hiera.noarch 1.3.4-1.el6 @puppetlabs_6_products
puppet.noarch 3.7.3-1.el6 @puppetlabs_6_products
puppetlabs-release.noarch
6-11 @puppetlabs_6_products
ruby-augeas.x86_64 0.4.1-3.el6 @puppetlabs_6_deps
ruby-shadow.x86_64 1:2.2.0-2.el6 @puppetlabs_6_deps
rubygem-json.x86_64 1.5.5-3.el6 @puppetlabs_6_deps
SSL
[root@grb16 ~]# yum list installed |grep ssl
nss_compat_ossl.x86_64 0.9.6-1.el6 @anaconda-CentOS-201410241409.x86_64/6.6
openssl.x86_64 1.0.1e-30.el6_6.4
openssl-devel.x86_64 1.0.1e-30.el6_6.4
[root@grb16 ~]#
Es wurden keine Diskrepanzen zwischen den auf verschiedenen Servern installierten SSL- und Puppet-Paketen gefunden. Die Systeme, die nicht außer Betrieb genommen oder neu installiert wurden, können Puppet weiterhin ausführen. Das Problem ist auf den neu installierten Server beschränkt. Beachten Sie, dass Puppet auf den beiden anderen neu installierten Servern nicht ausgeführt wurde. Was verursacht dieses Problem und wie kann es behoben werden?
quelle
puppet agent -t
Ausführen auf dem Client das Zertifikat erstellt und zur Genehmigung an den Puppenmeister gesendet. Wenn dies der richtige Weg ist, neue Zertifikate auszustellen, habe ich dies getan.Antworten:
Kurze Antwort
Das Problem
CRL is not yet valid for
weist darauf hin, dass die Zeit zwischen Puppet-Agent und Puppetmaster nicht synchron ist . Synchronisieren Sie die Zeit (NTP). Entfernen Sie das Zertifikat auch vom Puppet-Agent und Puppetmaster und führen Sie Puppet auf dem Agenten aus.Umfassende Antwort
CRL is not yet valid for
befindet sich im folgenden Snippet.Das folgende Testcode-Snippet beschreibt, was das Problem verursacht:
ssl_context
Gegenstand
Der Code enthält Snippets aus der OpenSSL :: X509 :: CRL- Klasse.
Emittent = (p1)
last_update = (p1)
Die letzte_aktualisierte Zeit ist die aktuelle Zeit plus ein zusätzlicher Tag und wird an die Betreff-Funktion übergeben, die die Aufruffunktion aufruft, die sich in der Klasse default_validator befindet .
Wenn preverify_ok false ist, gilt die else-Klausel. Da
if crl.last_update && crl.last_update < Time.now + FIVE_MINUTES_AS_SECONDS
sich false ergibt, weil die Zeit um einen weiteren Tag verkürzt wurde, gilt die else-Anweisung. Die Auswertung der@verify_errors << "#{error_string} for #{crl.issuer}"
Ergebnisse inCRL is not yet valid for /CN=Puppet CA: puppetmaster.example.com
.Um das Problem zu lösen:
sudo puppet cert clean <fqdn-puppet-agent>
Abschließend sollte die Zeit auf Puppet-Agenten und Puppetmaster die ganze Zeit synchronisiert werden. Das Überschreiten der maximal zulässigen Abweichung von 5 Minuten führt zu dem Problem.
quelle
systemctl restart ntpd
Bin auf dasselbe Problem gestoßen.
Unser Puppensetup wird mithilfe von GitHub versionsgesteuert. Jedes Mal, wenn wir einen neuen Puppenspieler bereitstellen, treten Zertifizierungsprobleme auf. Funktioniert normalerweise
puppet ca --clean --all
, aber wir haben festgestellt, dass Folgendes zuverlässiger ist:quelle