มีสองวิธีในการบรรลุผล:
Chef มีการtrusted_dir
อนุญาตให้เพิ่มใบรับรองในรายการที่เชื่อถือได้ เอกสารมีจำนวนมากของรายละเอียดเกี่ยวกับเรื่องนี้ การเพิ่มใบรับรอง CA ของคุณไปยังไดเรกทอรีนี้จะช่วยแก้ปัญหาได้ knife
มีมันยังอยู่ในเส้นทางที่แตกต่างกันเล็กน้อยตามเอกสารของตัวเอง
เชฟใช้รายการของตัวเอง 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
เพื่อเพิ่มอย่างถาวรไปยังสภาพแวดล้อมของคุณ) ในคำสั่งของคุณ