My problem is very similar to this issue, however my problem does not go away when I delete /var/lib/puppet/ssl directory.
So, I have a Puppet Master that is also configured as its agent. Since I prefer a bit different directory structure that currently Puppet uses (I prefer the previous convention), I overridden some paths in the config:
When I start agent, it does not pick up the overridden ssldir, nor the server directive under its own section.
I deleted /var/lib/puppet/ssl twice in a row and did not helped. But regardless of this, I think agent have to pick up overridden settings. Even if it's not follows any standards. If master can use these settings, agent have to do so.