Como faço para incluir meu certificado CA interno para validar trocas SSL no Chef?


15

Utilizamos uma Autoridade de Certificação interna para criar certificados de servidor em minha empresa.

Também precisamos lidar com um proxy transparente que faça a interceptação SSL (MITM).

Eu encontro regularmente erros de validação de SSL devido ao Chef não conhecer o certificado da CA e, às vezes, é o conjunto de ferramentas (prateleira, faca, até mesmo o próprio cliente do chef ao conversar com o servidor pela primeira vez desde que o chef 12 habilita o ssl por padrão).

A pergunta é: como faço para informar o Chef do meu certificado de CA para obter trocas SSL válidas?

Respostas:


13

Há algumas maneiras de alcançar o resultado:

  1. O chef precisa trusted_dirpermitir adicionar certificado à lista confiável. a documentação tem muitos detalhes sobre isso. Adicionar seu certificado de CA a esse diretório resolveria o problema. knifetem também em um caminho um pouco diferente, de acordo com sua própria documentação

  2. O Chef usa sua própria lista de certificados da CA em /opt/chef/embedded/ssl/certs/cacert.pem. Você pode adicionar seu certificado de CA no final desta lista para confiar nele.

A segunda opção tem a vantagem de permitir exportar a variável de ambiente SSL_CERT_FILEapontando para o chef cacert.pempara permitir que a maioria das ferramentas usando a opensslbiblioteca conheça seu certificado de CA.

No caso de um certificado autoassinado no servidor chef (ou outro servidor usado como destino em uma receita), knife ssl_fetchpermitiria que todos os comandos de faca funcionassem.

Para adicionar o certificado do servidor ao cacert.pem para o caso 2. acima, você pode usar o seguinte 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

O comando openssl está incluído no chef-dk; portanto, isso também pode ser feito no Windows; o patch muda para em c:\opscode\vez de /opt/e para exportar o uso da variável de ambiente set SSL_CERT_FILE=...(com /Ppara adicioná-lo permanentemente ao seu ambiente)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.