ใบรับรองตัวแทนหุ่นกระบอกตรวจสอบความล้มเหลว


10

ฉันมี Puppet Master / Agent ตั้งค่าและลงนามใบรับรองสำหรับตัวแทนบน master เรียบร้อยแล้ว อย่างไรก็ตามเมื่อฉันเรียกใช้puppet agent --testฉันพบความล้มเหลวที่มีลักษณะเช่นนี้:

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]  

hostname.domain.comเป็นหลัก

ฉันจะแก้ไขสิ่งนี้ได้อย่างไร ฉันทำให้แน่ใจว่านาฬิกาทั้งสองอยู่ในเวลาที่ถูกต้องในเขตเวลาเดียวกันฉันได้ลบทุกสิ่งใน/var/lib/puppet/sslไดเรกทอรีตัวแทนและลาออกแล้วฉันไม่รู้ว่าจะต้องทำอะไรอีก


เจ้านายของคุณดูเหมือนจะใช้ใบรับรองที่แตกต่างจากที่ลูกค้าไว้วางใจ ใบรับรองของอาจารย์เปลี่ยนไปหรือไม่
เชนแมดเดน

@ShaneMadden ฉันไม่คิดอย่างนั้น ... ฉันควรทำความสะอาดและเพิกถอนใบรับรองระดับปริญญาโทและลูกค้าหรือไม่ ฉันไม่ได้ยุ่งกับใบรับรองปริญญาโทเลย แต่นี่คือผลลัพธ์ของ "รายการใบรับรองหุ่นกระบอก - ทั้งหมด" ดูเหมือนว่า: + "masterhost.domain.com" (SHA1) E1: F7: 6A: 21: CB: ซีดี: 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

และนั่นmasterhost.domain.comก็เหมือนกับhostname.domain.comคำถามของคุณใช่ไหม? ลองทำสิ่งนี้เราจะดูว่าใบรับรองตรวจสอบด้วยตนเองหรือไม่ เรียกใช้openssl s_client -connect masterhost.domain.com:8140 -showcertsและคัดลอกข้อมูลใบรับรอง (เริ่มด้วย-----BEGIN CERTIFICATE-----รวมบรรทัดนั้นและบรรทัดใบรับรองสิ้นสุด) ลงในไฟล์ใหม่จากนั้นเรียกใช้openssl verify -CAfile /var/lib/puppet/ssl/certs/ca.pem /path/to/file/from/last/commandและดูว่ามีการตรวจสอบหรือไม่
เชนแมดเดน

@ShaneMadden ดูเหมือนว่ามีบางอย่างผิดปกติ .... เมื่อฉันรันคำสั่ง "-showcerts" มันให้ใบรับรอง "เริ่มต้น" และ "จบ" สองครั้งให้ฉันดังนั้นฉันจึงลองเพิ่มหนึ่งในไฟล์ใหม่และได้รับ สิ่งนี้: / var / lib / puppet / ssl / ca / ​​test: /CN=masterhost.domain.com ข้อผิดพลาด 7 ที่ 0 การค้นหาเชิงลึก: ความล้มเหลวของใบรับรองลายเซ็น 22297: ข้อผิดพลาด: 0407006A: รูทีน rsa: RSA_padding_check_PKCS1_type_1: ประเภทบล็อกไม่ใช่ 01: rsa_pk1.c: 100: 22297: ข้อผิดพลาด: 04067072: กิจวัตร RSA: RSA_EAY_PUBLIC_DECRYPT: การตรวจสอบช่องว่างภายในล้มเหลว: rsa_eay.c: 697: 22297: ข้อผิดพลาด: 0D0C5006: ASN1 เข้ารหัสกิจวัตร: ASN1_item_verify: EVP lib: a_verify.c: 173:
จอห์น Smith

นั่น .. แปลก ดูเหมือนว่าจะส่งใบรับรองหลักนอกเหนือจากเซิร์ฟเวอร์ใบรับรองในการเชื่อมต่อดังนั้นอาจเปรียบเทียบเนื้อหาของใบรับรองที่สองจาก-showcertsกับเนื้อหาของ/var/lib/puppet/ssl/certs/ca.pem- ควรเป็นเหมือนกันหรือไม่
เชนแมดเดน

คำตอบ:


13

สร้างการตั้งค่าใบรับรองไคลเอ็นต์ทั้งหมดอีกครั้ง สิ่งนี้ได้แก้ไขปัญหาใบรับรองใด ๆ ที่เราเคยประสบมาในอดีต คำสั่งต่อไปนี้จะถือว่าชื่อโฮสต์ของตัวแทนของคุณคือ agenthost.hostname.com

บนไคลเอนต์ลบ certs ที่เก็บไว้ทั้งหมดรวมถึง CA:

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

บนต้นแบบลบ CSRs ที่ค้างอยู่หรือใบรับรองไคลเอ็นต์เก่าสำหรับไคลเอ็นต์นี้:

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

จากนั้นบนไคลเอ็นต์ให้เชื่อมต่อกับต้นแบบอีกครั้งและส่ง CSR:

puppet agent -t --waitforcert=60

และเมื่อมันกำลังรอ (หากคุณไม่ได้ตั้งค่าการเปิดใช้งานการลงชื่ออัตโนมัติ) บนมาสเตอร์จะอนุมัติ CSR เพื่อให้ใบรับรองลูกค้าใหม่ถูกส่งกลับ:

puppet cert sign agenthost.domain.com

สิ่งนี้ควรทำให้ตัวแทนดาวน์โหลดใบรับรอง CA หุ่นเชิดอีกครั้งและสมัครใหม่สำหรับใบรับรองของตนเอง

เราต้องใช้ขั้นตอนนี้ในอดีตเมื่อเราเปลี่ยนเซิร์ฟเวอร์หุ่นกระบอกและเปลี่ยน CA certs หรือเมื่อเราสร้างโฮสต์ด้วยชื่อโฮสต์เดียวกัน

ตรวจสอบให้แน่ใจว่าตัวแทนของคุณรู้ชื่อโฮสต์ที่ผ่านการรับรองจริง ใช้คำสั่ง 'ชื่อโฮสต์' เพื่อให้แน่ใจว่าเป็นสิ่งที่คุณคาดหวัง


3
สำหรับท่านอาจารย์puppet cert clean ‘agentName’ทำงานให้ฉัน RHEL หุ่นองค์กร SSL /etc/puppetlabs/puppet/sslสถานที่: และฉันได้ซิงค์เวลาระหว่างอาจารย์กับตัวแทนแล้ว
Ivan Chau

Puppet Enterprise และ Puppet 4 ที่ใหม่กว่าเก็บ certs ของพวกเขาไว้ใต้ / etc / puppetlabs / puppet / ssl ดังที่ได้กล่าวไว้ข้างต้น ตำแหน่ง / var / lib / puppet / ssl สำหรับรุ่น Puppet 2.x และ 3.x
Steve Shipway

6

ฉันมีปัญหาที่คล้ายกัน ฉันได้ตั้งค่าสภาพแวดล้อมที่ไม่เหมาะสมกับ puppetmaster หนึ่งคนและลูกค้าหลายราย ปัญหาคือเมื่อฉันทำลายและสร้าง puppetmaster ลูกค้าตรวจพบ puppetmaster ใหม่เป็นตัวปลอม

การลบ/etc/puppet/sslไคลเอ็นต์แก้ปัญหา

โปรดจำไว้ว่าการกำหนดค่า ssl ของคุณจะถูกแคชดังนั้นจึงจำเป็นต้องเริ่มต้นแบบหุ่นเชิดอีกครั้งหากคุณตัดสินใจที่จะลบ/etc/puppet/sslโฮสต์ของคุณด้วย:

sudo /etc/init.d/puppetmaster restart

service puppetserver restartแก้ไขให้ฉัน
spuder
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.