Nama inang wayang tidak cocok dengan sertifikat server

10

Saya mencoba mengatur VM Ubuntu dengan boneka yang terpasang sehingga saya dapat menguji pengaturan produksi kami secara lokal. Saya mengalami kesulitan membuat kepala boneka dan boneka berbicara satu sama lain. Biarkan saya membawa Anda melalui langkah saya. (Server hostnameadalah FQDN dari format "web1.xxx.xxx.net").

Jadi pertama-tama, saya menghapus semua file pem (kecuali CA pems tentu saja) dari /etc/puppet/ssldirektori sehingga saya bisa melakukan awal yang baru. puppetca --listtidak mengembalikan hasil.

Kemudian, saya berlari puppetd --testuntuk menghasilkan CSR untuk dalang itu. puppetca --listsekarang termasuk nama host saya ("web1.xxx.xxx.net").

Lalu aku lari puppetca --sign web1.xxx.xxx.net. Sekarang puppetca --listkosong lagi - semuanya berfungsi dengan baik sejauh ini.

Terakhir saya lari puppetd --testlagi. Saya mendapatkan output berikut:

err: Could not retrieve catalog from remote server: hostname was not match with the server certificate
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run

Daftar isi /etc/puppet/ssldirektori menunjukkan file PEM dengan nama server yang benar, yang cocok dengan saya hostname. Adakah yang tahu cara menyerang masalah ini?

Masa depan RISC
sumber

Jawaban:

9

Kesalahannya adalah karena klien secara default terhubung ke server hostname 'boneka' tetapi sertifikat yang disajikan tidak memiliki 'boneka' baik sebagai subjeknya atau sebagai atribut SubjectAltName.

Untuk memperbaikinya, Anda dapat (memilih satu):

  1. alih-alih menginisialisasi sertifikat kepala boneka Anda dengan menjalankan puppetd, inisialisasi dengan menjalankan puppetmasterd- ini akan menyebabkan nama subjek sertifikat menyertakan "boneka".

  2. alih-alih meninggalkan hal-hal yang kebetulan dapat Anda gunakan puppetca --generate --certdnsnames puppet:puppet.mydomain.com web1.xx.xx.xx.net- opsi certdnsnames menentukan daftar SubjectAltNames yang akan dimasukkan dalam sertifikat; harus memiliki daftar nama yang dipisahkan oleh titik dua yang akan digunakan klien untuk menghubungi server.

  3. alih-alih hanya berjalan puppetd --testdi klien, jalankan puppetd --test --server=web1.xx.xx.xx.netsehingga nama server yang disambungkan klien adalah yang benar-benar ada dalam sertifikat yang disajikan oleh server.

Lihat entri blog masterzen yang sangat baik untuk pemecahan masalah lebih lanjut: Puppet SSL Dijelaskan

eric sorenson
sumber
3

Apakah Anda memeriksa file log puppetmaster? Saya menemukan masalah yang sama, dan menemukan bahwa server mencatat info sertifikat:

[2012-02-28 16:21:09] INFO  
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 2 (0x2)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: CN=ca
        Validity
            Not Before: Feb 26 16:32:46 2012 GMT
            Not After : Feb 24 16:32:46 2017 GMT
        Subject: CN=ubuntu.localdomain

Subjek bidang menunjukkan bahwa CN adalah "ubuntu.localdomain", jadi saya mengeksekusi boneka dengan melakukan:

puppetd -t --server=ubuntu.localdomain --fqdn=myfqdn

Semoga ini membantu :-)

Pablo Torrecilla
sumber
2

Selain jawaban Pau, saya hanya ingin menggarisbawahi bahwa Anda dapat memeriksa sertifikat puppetmasters menggunakan:

openssl x509 -text -in /var/lib/puppet/ssl/certs/<hostname_of_puppet_master>

Kemudian pastikan bahwa Anda menggunakan nama host yang sama persis ketika dari klien:

puppetd --server <hostname_of_puppet_master> <etc>
3 bulan
sumber
0

Apakah kedua server dapat saling menyelesaikan? Dugaan saya adalah bahwa karena Anda VMing, Anda mungkin kehilangan resolusi nama. Jika Anda tidak menggunakan DNS untuk membiarkan server saling menyelesaikan, Anda perlu menambahkan entri ke /etc/hostsfile Anda di kedua server.

Wayang membutuhkan nama host untuk menyelesaikan ke IP yang benar, tanpa ini Anda akan mendapatkan kesalahan yang Anda sebutkan. Anda mungkin perlu membuat ulang sertifikat setelah melakukan ini. Kedua mesin harus dapat melakukan ping masing-masing dengan nama host.

Satu hal yang perlu diperhatikan dengan VM adalah Anda menyinkronkan waktu di server. Jika tidak, kemungkinan sertifikatnya tidak valid.

Joshua Enfield
sumber
Ah, saya seharusnya sudah menentukan. Wayang dan Wayang keduanya berjalan di server yang sama; VM saya. Dan ya, saya bisa melakukan ping komputer dari dirinya sendiri menggunakan FQDN.
RISCfuture
Maaf Joshua itu tidak benar. boneka tidak melakukan validasi DNS-> IP terhadap sertifikat yang disajikan. Itu memang melakukan validasi hostname ke certname, yang merupakan penyebab kesalahan.
eric sorenson