Hay un par de formas de lograr el resultado:
Chef tiene trusted_dir
que permitir agregar certificado a la lista de confianza. La documentación tiene muchos detalles al respecto. Agregar su certificado de CA a este directorio resolvería el problema. knife
lo tiene también en una ruta ligeramente diferente según su propia documentación
Chef utiliza su propia lista de certificados de CA en /opt/chef/embedded/ssl/certs/cacert.pem
. Puede agregar su certificado de CA al final de esta lista para confiar en él.
La segunda opción tiene la ventaja de permitir exportar la variable de entorno SSL_CERT_FILE
que apunta a chef cacert.pem
para permitir que la mayor parte de las herramientas de uso de openssl
la biblioteca para conocer su certificado de entidad emisora.
Para el caso de un certificado autofirmado en el servidor del chef (u otro servidor utilizado como objetivo en una receta), knife ssl_fetch
permitiría que todos los comandos de cuchillo funcionen.
Para agregar el certificado del servidor a cacert.pem para el caso 2. anterior, puede usar el siguiente comando:
# 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
El comando openssl se incluye en chef-dk, por lo que esto también se puede hacer en Windows, el parche cambia a en c:\opscode\
lugar de /opt/
exportar el uso de la variable de entorno set SSL_CERT_FILE=...
( /P
para agregarlo permanentemente a su entorno)