เครื่องจักรสามเครื่องในสภาพแวดล้อมการผลิตมีปัญหาฮาร์ดแวร์บางอย่างและถูกเลิกใช้งาน ทีมโครงสร้างพื้นฐานได้ทำการติดตั้งใหม่และให้ชื่อโฮสต์และที่อยู่ IP เดียวกันกับพวกเขา จุดประสงค์คือเรียกใช้ Puppet บนระบบเหล่านี้เพื่อให้สามารถรับหน้าที่เหล่านี้ได้อีกครั้ง
พยายาม
1) ใบรับรอง Puppet เก่าถูกลบออกจาก Puppetmaster โดยการใช้คำสั่งต่อไปนี้:
puppet cert revoke grb16.company.com
puppet cert clean grb16.company.com
2) เมื่อลบใบรับรองเก่าแล้วคำขอสร้างใบรับรองใหม่จะถูกสร้างขึ้นโดยการออกคำสั่งต่อไปนี้จากหนึ่งในโหนดที่ติดตั้งใหม่:
[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) เมื่อคำขอใบรับรองปรากฏบน Puppetmaster คำสั่งต่อไปนี้ถูกใช้เพื่อเซ็นรับรองคำขอ:
[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 ~]#
ปัญหา
เมื่อคำขอใบรับรองได้รับการลงนามแล้วและการเรียกใช้ Puppet ได้เริ่มขึ้นแล้วข้อผิดพลาดต่อไปนี้จะเกิดขึ้น:
[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 ~]#
การใช้ Puppet เป็นครั้งที่สองจะทำให้:
[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 ~]#
การวิเคราะห์
เพื่อแก้ไขปัญหาข้อความแสดงข้อผิดพลาดถูกตรวจสอบและดูเหมือนว่าปัญหาเกี่ยวข้องกับ SSL หรือ Puppet อาจมีการติดตั้งหนึ่งในแพ็คเกจเหล่านี้ไม่ถูกต้องหรือติดตั้งรุ่นที่ไม่ถูกต้องบนโหนดที่ติดตั้งใหม่
หุ่นเชิด
[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 ~]#
ไม่พบความแตกต่างระหว่างแพคเกจ SSL และ Puppet ที่ติดตั้งบนเซิร์ฟเวอร์ต่างๆ ระบบที่ยังไม่ได้ปลดประจำการหรือติดตั้งใหม่ยังคงสามารถเรียกใช้ Puppet ได้ ปัญหาถูก จำกัด ไว้ที่เซิร์ฟเวอร์ที่ติดตั้งใหม่ โปรดทราบว่า Puppet ไม่ได้ถูกเรียกใช้บนเซิร์ฟเวอร์ที่ติดตั้งอีกสองเครื่อง สาเหตุของปัญหานี้คืออะไรและจะแก้ไขได้อย่างไร
puppet agent -t
ที่ฉันเรียกใช้บนไคลเอนต์มันสร้างใบรับรองและส่งไปยัง puppetmaster เพื่อขออนุมัติดังนั้นถ้านั่นเป็นวิธีที่เหมาะสมในการออกใบรับรองใหม่ฉันก็ทำได้