Bagaimana cara saya memasukkan sertifikat CA internal saya untuk memvalidasi pertukaran SSL di Chef?

15

Kami menggunakan Otoritas Sertifikat internal untuk membuat sertifikat server di perusahaan saya.

Kami juga harus berurusan dengan proxy transparan yang melakukan SSL interception (MITM).

Saya secara teratur mengalami kesalahan validasi SSL karena Chef tidak mengetahui sertifikat CA dan kadang-kadang alat di sekitar (berkshelf, pisau, bahkan koki klien itu sendiri ketika berbicara dengan server untuk pertama kalinya sejak koki 12 mengaktifkan ssl secara default).

Pertanyaannya adalah: bagaimana cara membuat Chef mengetahui sertifikat CA saya untuk mendapatkan pertukaran SSL yang valid?

Tensibai
sumber

Jawaban:

13

Ada beberapa cara untuk mencapai hasil:

  1. Chef harus trusted_dirmengizinkan penambahan sertifikat ke daftar tepercaya. yang dokumentasi memiliki banyak rincian tentang hal itu. Menambahkan sertifikat CA Anda ke direktori ini akan menyelesaikan masalah. knifememilikinya juga di jalur yang sedikit berbeda sesuai dokumentasinya sendiri

  2. Chef menggunakan daftar sertifikat CA sendiri di /opt/chef/embedded/ssl/certs/cacert.pem. Anda dapat menambahkan sertifikat CA di akhir daftar ini untuk mempercayainya.

Opsi kedua memiliki keuntungan memungkinkan untuk mengekspor variabel lingkungan yang SSL_CERT_FILEmenunjuk ke koki cacert.pemuntuk memungkinkan sebagian besar alat menggunakan opensslperpustakaan untuk mengetahui sertifikat CA Anda.

Untuk kasus sertifikat yang ditandatangani sendiri pada server chef (atau server lain yang digunakan sebagai target dalam resep), knife ssl_fetchakan memungkinkan semua perintah pisau bekerja.

Untuk menambahkan sertifikat server ke cacert.pem untuk kasus 2. di atas, Anda dapat menggunakan perintah berikut:

# 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

Perintah openssl termasuk dalam chef-dk, jadi ini dapat dilakukan di bawah windows juga, tambalannya diganti menjadi c:\opscode\bukan /opt/dan untuk mengekspor penggunaan variabel lingkungan set SSL_CERT_FILE=...(dengan /Pmenambahkannya secara permanen ke lingkungan Anda)

Tensibai
sumber