Sertifikat agen boneka memverifikasi kegagalan

10

Saya memiliki Master / Agen Wayang yang diatur, dan telah berhasil menandatangani sertifikat untuk agen di master. Namun, ketika saya menjalankan puppet agent --testsaya mendapatkan kegagalan yang terlihat seperti ini:

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: [certificate signature failure for /CN=hostname.domain.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: [certificate signature failure for /CN=hostname.domain.com]  
Error: /File[/var/lib/puppet/lib]: Could not evaluate: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com] Could not retrieve file metadata for puppet://hostname.domain.com/plugins: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com]  
Error: Could not retrieve catalog from remote server: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.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: [certificate signature failure for /CN=hostname.domain.com]  

sang hostname.domain.commaster

Bagaimana cara saya memperbaikinya? Saya telah memastikan bahwa kedua jam berada pada waktu yang tepat di zona waktu yang sama, saya telah menghapus semua yang ada di /var/lib/puppet/ssldirektori agen dan mengundurkan diri, saya tidak tahu harus berbuat apa lagi.

John Smith
sumber
Master Anda tampaknya menggunakan sertifikat berbeda dari kepercayaan klien Anda? Apakah sertifikat master berubah?
Shane Madden
@ShaneMadden saya tidak berpikir begitu ... haruskah saya membersihkan dan mencabut sertifikat master dan klien? Saya belum mengacaukan sertifikat master sama sekali, tapi inilah hasil dari "daftar sertifikat boneka --semua" terlihat seperti: + "masterhost.domain.com" (SHA1) E1: F7: 6A: 21: CB: CD: xx: xx: xx: xx ... + "agenthost.domain.com" (SHA256) 5A: D9: 7B: 96: 0B: FF: E4: 87: 58: AF: 00: xx: xx: xx : xx ..
John Smith
Dan itu masterhost.domain.comsama dengan hostname.domain.compertanyaan Anda, bukan? Mari kita coba ini, kita akan melihat apakah sertifikat memverifikasi secara manual; jalankan openssl s_client -connect masterhost.domain.com:8140 -showcerts, dan salin data sertifikat (dimulai dengan -----BEGIN CERTIFICATE-----, sertakan baris itu dan baris sertifikat akhir) ke dalam file baru, kemudian jalankan openssl verify -CAfile /var/lib/puppet/ssl/certs/ca.pem /path/to/file/from/last/command, dan lihat apakah itu diverifikasi.
Shane Madden
@ShaneMadden Sepertinya ada sesuatu yang salah .... Ketika saya menjalankan perintah "-showcerts", itu memberi saya dua sertifikat "mulai" dan "akhir", jadi saya mencoba menambahkan salah satu dari itu ke file baru, dan mendapatkan ini: / var / lib / boneka / ssl / ca / ​​test: /CN=masterhost.domain.com galat 7 pada pencarian 0 kedalaman: kegagalan tanda tangan sertifikat 22297: galat: 0407006A: rutin rsa: RSA_padding_check_PKCS1_type_1: tipe blok tidak 01: rsa_pk1.c: 100: 22297: error: 04.067.072: rsa rutinitas: RSA_EAY_PUBLIC_DECRYPT: bantalan cek gagal: rsa_eay.c: 697: 22297: error: 0D0C5006: asn1 encoding rutinitas: ASN1_item_verify: EVP lib: a_verify.c: 173:
John Smith
Itu aneh. Kedengarannya seperti mengirim sertifikat root selain ke server cert dalam koneksi, jadi mungkin hanya membandingkan konten dari sertifikat kedua dari -showcertsdengan isi /var/lib/puppet/ssl/certs/ca.pem- mereka harus identik?
Shane Madden

Jawaban:

13

Buat ulang seluruh pengaturan sertifikat klien. Ini selalu memperbaiki masalah sertifikat yang pernah kami alami di masa lalu. Instruksi berikut mengasumsikan nama host agen Anda adalah agenthost.hostname.com

Pada klien, hapus semua sertifikat yang disimpan, termasuk CA:

find /var/lib/puppet/ssl -name '*.pem' -delete

Pada master, hapus CSR yang tertunda atau sertifikat klien lama untuk klien ini:

find /var/lib/puppet/ssl -name agenthost.domain.com.pem -delete

Kemudian, pada klien, sambungkan kembali ke master dan kirim CSR:

puppet agent -t --waitforcert=60

dan ketika menunggu (jika Anda belum mengaktifkan tanda otomatis diaktifkan) maka pada master menyetujui CSR sehingga sertifikat klien baru dikirim kembali:

puppet cert sign agenthost.domain.com

Ini harus membuat agen mengunduh ulang sertifikat boneka CA, dan mendaftar ulang untuk sertifikatnya sendiri.

Kami harus menggunakan prosedur ini di masa lalu ketika kami mengubah server boneka dan sertifikat CA berubah, atau ketika kami membangun kembali sebuah host dengan nama host yang sama.

Pastikan agen Anda tahu nama host yang benar-benar memenuhi syarat; gunakan perintah 'hostname' untuk memastikan bahwa itu yang Anda harapkan.

Steve Shipway
sumber
3
Pada Guru, puppet cert clean ‘agentName’bekerja untuk saya. RHEL Wayang Perusahaan ssl lokasi: /etc/puppetlabs/puppet/ssl. Dan saya sudah menyinkronkan waktu antara Master dan Agen.
Ivan Chau
Puppet Enterprise, dan Puppet 4 yang lebih baru, menyimpan sertifikat mereka di / etc / puppetlabs / puppet / ssl, seperti yang disebutkan di atas. Lokasi / var / lib / puppet / ssl adalah untuk edisi komunitas Puppet 2.x dan 3.x.
Steve Shipway
6

Saya punya masalah serupa. Saya telah mengatur lingkungan gelandangan dengan satu dalang dan beberapa klien. Masalahnya adalah ketika saya menghancurkan dan menciptakan kepala boneka, klien mendeteksi kepala boneka baru sebagai penipu.

Menghapus /etc/puppet/sslklien memecahkan masalah.

Ingat bahwa konfigurasi ssl Anda akan di-cache, sehingga diperlukan restart dari master wayang , jika Anda memutuskan untuk juga menghapus Anda /etc/puppet/ssldi host tersebut:

sudo /etc/init.d/puppetmaster restart
adrianlzt
sumber
service puppetserver restartmemperbaikinya untuk saya
pengamen