ฉันจะรวมใบรับรอง CA ภายในของฉันเพื่อตรวจสอบการแลกเปลี่ยน SSL ใน Chef ได้อย่างไร


15

เราใช้ผู้ออกใบรับรองภายในเพื่อสร้างใบรับรองเซิร์ฟเวอร์ใน บริษัท ของฉัน

นอกจากนี้เรายังต้องจัดการกับพร็อกซีแบบโปร่งใสที่ทำการสกัดกั้น SSL (MITM)

ฉันพบข้อผิดพลาดในการตรวจสอบความถูกต้อง SSL เป็นประจำเนื่องจาก Chef ไม่รู้จักใบรับรอง CA และบางครั้งก็เป็นเครื่องมือรอบตัวพ่อครัว (berkshelf, knife, มีดหรือแม้แต่ลูกค้าพ่อครัวเองเมื่อพูดคุยกับเซิร์ฟเวอร์เป็นครั้งแรกเนื่องจาก Chef 12 เปิดใช้งาน SSL)

คำถามคือฉันจะทำให้ Chef รับรู้เกี่ยวกับใบรับรอง CA ของฉันเพื่อรับการแลกเปลี่ยน SSL ที่ถูกต้องได้อย่างไร

คำตอบ:


13

มีสองวิธีในการบรรลุผล:

  1. Chef มีการtrusted_dirอนุญาตให้เพิ่มใบรับรองในรายการที่เชื่อถือได้ เอกสารมีจำนวนมากของรายละเอียดเกี่ยวกับเรื่องนี้ การเพิ่มใบรับรอง CA ของคุณไปยังไดเรกทอรีนี้จะช่วยแก้ปัญหาได้ knifeมีมันยังอยู่ในเส้นทางที่แตกต่างกันเล็กน้อยตามเอกสารของตัวเอง

  2. เชฟใช้รายการของตัวเอง CA certiticate /opt/chef/embedded/ssl/certs/cacert.pemใน คุณสามารถเพิ่มใบรับรอง CA ของคุณในตอนท้ายของรายการนี้เพื่อเชื่อถือได้

ตัวเลือกที่สองมีข้อได้เปรียบของการอนุญาตให้คุณส่งออกตัวแปรสภาพแวดล้อมที่SSL_CERT_FILEชี้ไปยังพ่อครัวcacert.pemเพื่อให้เครื่องมือส่วนใหญ่ที่ใช้opensslไลบรารีรู้ใบรับรอง CA ของคุณ

สำหรับกรณีของใบรับรองที่ลงชื่อด้วยตนเองบนเซิร์ฟเวอร์เชฟ (หรือเซิร์ฟเวอร์อื่นที่ใช้เป็นเป้าหมายในสูตรอาหาร) knife ssl_fetchจะอนุญาตให้คำสั่งมีดทั้งหมดทำงานได้

ในการเพิ่มใบรับรองเซิร์ฟเวอร์ลงใน cacert.pem สำหรับกรณีที่ 2 ด้านบนคุณสามารถใช้คำสั่งต่อไปนี้:

# For a self signed CA certiticate
openssl s_client -showcerts -connect <YOUR_CHEF_SERVER>:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >> /opt/chefdk/embedded/ssl/certs/cacert.pem

# For an internal CA signed certificate:
openssl s_client -showcerts -verify 5 -connect <YOUR_CHEF_SERVER>:443 </dev/null 2>/dev/null | awk '/BEGIN/,/END/{if(/BEGIN/){a++}; certs[a]=(certs[a] "\n" $0)}; END {print certs[a]}' >> /opt/chefdk/embedded/ssl/certs/cacert.pem

export SSL_CERT_FILE=/opt/chefdk/embedded/ssl/certs/cacert.pem

คำสั่ง openssl รวมอยู่ใน chef-dk ดังนั้นสิ่งนี้สามารถทำได้ภายใต้หน้าต่าง เปลี่ยนเส้นทางไปแทนc:\opscode\ /opt/ในการส่งออกตัวแปรสภาพแวดล้อมให้ใช้set SSL_CERT_FILE=...( /Pเพื่อเพิ่มอย่างถาวรไปยังสภาพแวดล้อมของคุณ) ในคำสั่งของคุณ

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