[chef] Re: Upgrade Chef from 11.6 to 12.3


Chronological Thread 
  • From: Daniel DeLeo < >
  • To:
  • Subject: [chef] Re: Upgrade Chef from 11.6 to 12.3
  • Date: Mon, 11 May 2015 10:52:34 -0700



On Monday, May 11, 2015 at 10:36 AM, Mohammad Fattahian wrote:

> When I upgrade Chef (on the clients) from 11.6 to 12.3 the connection to 
> server (Chef 11.6) broken.
>  
>  :~#
>  chef-client  
> Starting Chef Client, version 12.3.0
> Creating a new client identity for test.domain.com (http://test.domain.com
> using the validator key.
> [2015-05-07T16:46:17-04:00] ERROR: SSL Validation failure connecting to 
> host: xxxx.domain.com (http://xxxx.domain.com) - SSL_connect returned=1 
> errno=0 state=SSLv3 read server certificate B: certificate verify failed
>  
> ================================================================================
> Chef encountered an error attempting to create the client " test.domain.com 
> (http://test.domain.com) "
> ================================================================================
>  
> [2015-05-07T16:46:17-04:00] FATAL: Stacktrace dumped to 
> /var/chef/cache/chef-stacktrace.out
> Chef Client failed. 0 resources updated in 1.306760691 seconds
> [2015-05-07T16:46:17-04:00] ERROR: SSL_connect returned=1 errno=0 
> state=SSLv3 read server certificate B: certificate verify failed
> [2015-05-07T16:46:17-04:00] FATAL: Chef::Exceptions::ChildConvergeError: 
> Chef run process exited unsuccessfully (exit code 1)

This isn’t a bug. In the past, chef-client did not verify the SSL certificate 
of the server, which leaves you vulnerable to a MITM attack. If you are sure 
you don’t need this protection (I would argue that defense-in-depth means you 
should not turn this off, even if you’re only connecting on a private 
network), then you can set the old default with `ssl_verify_mode :verify_none`

  
>  
> This is what I do to fix it:
>  
> 1. delete the node / client from Chef WEB Interface

This isn’t necessary, the client.pem is used for application-level 
authentication, which is not relevant to the transport layer encryption.
  
> 2. add “ssl_verify_mode :verify_peer” into client.rb (client side)

This isn’t necessary, `ssl_verify_mode :verify_peer` is the default in Chef 
Client 12+
  
> 3. delete client.pm (http://client.pm) (client side)

Again, this isn’t required because the client.pem is only relevant to 
application layer authentication.
  
> 4. mkdir /etc/chef/trusted_certs/
> 5. 
>  :/var/opt/chef-server/nginx/ca#
>  scp server.crt 
>  :/etc/chef/trusted_certs/
>   

These two steps are all you need to do.
  
> 6. knife bootstrap CLIENT --sudo -x toor

You only need this step because you’ve deleted the client/node on the server, 
if you skip steps 1 and 3, then you don’t need this. FWIW, if you have 
downloaded your Chef Server’s cert to your workstation and you’re running 
knife 12+ on your workstation, it will copy your server’s cert to the 
bootstrap node as part of the bootstrap process.
  
> 7. To check the SSL configuration : knife ssl check -c /etc/chef/client.rb
>  
>  
> Any other workaround?

You can make knife download the certificates from the server with `knife ssl 
fetch`. HOWEVER, this is only as good as clicking the “trust this certificate 
for this server” from the security warning pop-up on a browser. If you’re 
already MITM’d then you’re just trusting the MITM's certificate. If you use 
this command then you should take a SHA-256 of the cert on the server and 
compare to what you downloaded.
  
>  
> Mohammad


I’ll look into having the error messages on the client provide some of this 
information so it’s easier to resolve when this comes up.

HTH,
  
--  
Daniel DeLeo






Archive powered by MHonArc 2.6.16.

§