Certificado de agente fantoche verificar falha

10

Eu tenho um Puppet Master / Agent configurado e assinei com sucesso o certificado para o agente no master. No entanto, quando executo puppet agent --test, recebo uma falha parecida com esta:

Warning: Unable to fetch my node definition, but the agent run will continue:  
Warning: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com]  
Info: Retrieving plugin  
Error: /File[/var/lib/puppet/lib]: Failed to generate additional resources using 'eval_generate: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com]  
Error: /File[/var/lib/puppet/lib]: Could not evaluate: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com] Could not retrieve file metadata for puppet://hostname.domain.com/plugins: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com]  
Error: Could not retrieve catalog from remote server: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com]  
Warning: Not using cache on failed catalog   
Error: Could not retrieve catalog; skipping run  
Error: Could not send report: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com]  

o hostname.domain.comé o mestre

Como faço para corrigir isso? Verifiquei se os dois relógios estão no horário correto no mesmo fuso horário, apaguei tudo no /var/lib/puppet/ssldiretório do agente e renunciei, não sei mais o que fazer.

John Smith
fonte
Seu mestre parece estar usando um certificado diferente do que o seu cliente confia? O certificado do mestre mudou?
Shane Madden
@ShaneMadden Acho que não ... devo limpar e revogar os certificados de mestrado e de cliente? Eu não brinquei com os certificados mestres, mas aqui está a aparência da saída de "puppet cert list --all": + "masterhost.domain.com" (SHA1) E1: F7: 6A: 21: CB: CD: xx: xx: xx: xx ... + "agenthost.domain.com" (SHA256) 5A: D9: 7B: 96: 0B: FF: E4: 87: 58: AF: 00: xx: xx: xx : xx ..
John Smith
E masterhost.domain.comé o mesmo que hostname.domain.comna sua pergunta, certo? Vamos tentar isso, veremos se os certificados são verificados manualmente; execute openssl s_client -connect masterhost.domain.com:8140 -showcertse copie os dados do certificado (começa com -----BEGIN CERTIFICATE-----, inclua essa linha e a linha final do certificado) em um novo arquivo, execute openssl verify -CAfile /var/lib/puppet/ssl/certs/ca.pem /path/to/file/from/last/commande verifique se ele é verificado.
Shane Madden
@ShaneMadden Parece que algo está errado .... Quando executei o comando "-showcerts", ele me deu dois certificados "begin" e "end", então tentei primeiro adicionar um desses em um novo arquivo e obtive this: / var / lib / puppet / ssl / ca / ​​test: /CN=masterhost.domain.com erro 7 em 0 profundidade pesquisa: falha na assinatura do certificado 22297: erro: 0407006A: rotinas rsa: RSA_padding_check_PKCS1_type_1: o tipo de bloco não é 01: rsa_pk1.c: 100: 22297: erro: 04067072: rotinas RSA: RSA_EAY_PUBLIC_DECRYPT: verificação de preenchimento falhou: rsa_eay.c: 697: 22297: erro: 0D0C5006: ASN1 codificação de rotinas: ASN1_item_verify: EVP lib: a_verify.c: 173:
John Smith
Isso é estranho. Parece que ele está enviando o certificado raiz além do certificado do servidor na conexão, então talvez apenas compare o conteúdo do segundo certificado -showcertscom o conteúdo de /var/lib/puppet/ssl/certs/ca.pem- eles devem ser idênticos?
Shane Madden

Respostas:

13

Recrie toda a instalação do certificado do cliente. Isso sempre corrigia os problemas de certificação que tivemos no passado. A instrução a seguir assume que o nome do host do seu agente é agenthost.hostname.com

No cliente, exclua todos os certificados armazenados, incluindo a CA:

find /var/lib/puppet/ssl -name '*.pem' -delete

No mestre, exclua quaisquer CSRs pendentes ou certificados de cliente antigos para este cliente:

find /var/lib/puppet/ssl -name agenthost.domain.com.pem -delete

Em seguida, no cliente, reconecte-se ao mestre e envie um CSR:

puppet agent -t --waitforcert=60

e quando estiver aguardando (se você não tiver definido a assinatura automática ativada), o mestre aprovará o CSR para que um novo certificado de cliente seja enviado de volta:

puppet cert sign agenthost.domain.com

Isso deve fazer com que o agente faça novamente o download dos certificados da CA fantoche e solicite novamente seu próprio certificado.

Tivemos que usar esse procedimento no passado quando alteramos os servidores fantoches e os certificados da CA foram alterados ou quando reconstruímos um host com o mesmo nome de host.

Verifique se o seu agente sabe seu nome completo do host totalmente qualificado; use o comando 'hostname' para garantir que é o que você espera que seja.

Steve Shipway
fonte
3
No Mestre, puppet cert clean ‘agentName’funciona para mim. RHEL Puppet Empresa SSL local: /etc/puppetlabs/puppet/ssl. E sincronizei o tempo entre o mestre e o agente.
Ivan Chau
O Puppet Enterprise e o Puppet 4 mais recente armazenam seus certificados em / etc / puppetlabs / puppet / ssl, conforme mencionado acima. O local / var / lib / puppet / ssl é para as edições da comunidade Puppet 2.xe 3.x.
precisa
6

Eu tenho um problema similar. Eu montei um ambiente vagante com um mestre de marionetes e vários clientes. O problema é que, quando eu destruo e crio o puppetmaster, os clientes detectam o novo puppetmaster como um impostor.

Excluir /etc/puppet/sslno cliente resolve o problema.

Lembre-se de que sua configuração ssl será armazenada em cache, portanto, é necessária uma reinicialização do mestre de marionetes , se você decidir excluir também o seu /etc/puppet/sslnesse host:

sudo /etc/init.d/puppetmaster restart
adrianlzt
fonte
service puppetserver restart
corrigi-