Modifica del certificato SSL di un Puppet Master
Jump to navigation
Jump to search
Se si configura un Master puppet in lan, il certificato SSL verrà generato con l'fqdn del dominio locale, ad esempio myserver.mylan.example.com
Se, ad esempio, poi si vuole esporre questo Master su internet, e renderlo raggiungibile tramite un IP Pubblico, cin un nome DNS ad esempio mypublic.example.com, se si tenta di accedervi, si otterrà un errore del tipo:
hostname was not match with the server certificate
- Verificare sul master che nomi DNS alterntivi contiene il certificato attuale:
openssl x509 -text -in $(puppet master --configprint ssldir)/$(hostname -f).pem | grep DNS
DNS:puppet, DNS:puppet.mylan.example.com, DNS:myserver.mylan.example.com
- È Possibile rigenerare questo certificato senza dover rigenerare nulla per i client, includendo il nuovo nome DNS mypublic.example.com.
- Sul master, trovare il nome del vecchio certificato:
sudo puppet master --configprint certname
myserver.mylan.example.com
- Verificare la directory dove è memorizzato il certificato:
puppet master --configprint ssldir
/etc/puppetlabs/puppet/ssl
- Rimuovere il vecchio certificato:
puppet cert clean "$(puppet master --configprint certname).pem"
- Oppure:
sudo find $(puppet master --configprint ssldir) -name "$(puppet master --configprint certname).pem" -delete
- Generare il nuovo:
sudo puppet cert generate \ myserver.mylan.example.com \ --dns_alt_names= \ puppet,\ puppet.mylan.example.com,\ puppet.example.com,\ mypublic.example.com
- Verificarlo:
sudo openssl x509 -text -in $(puppet master --configprint ssldir)/$(hostname -f).pem | grep DNS
DNS:puppet, DNS:puppet.mylan.example.com, DNS:myserver.mylan.example.com, DNS:puppet.example.com, DNS:mypublic.example.com,
- Riavviare il Master:
sudo invoke-rc.d puppetmaster restart
- ATTENZIONE: se il puppetmaster gira sotto passenger (ad esempio è un'istanza Foreman), è necessario riavviare APACHE, dato che utlizza il certificato che abbiamo appena modificato:
sudo invoke-rc.d apache2 restart
- Controllare ora che ci si possa connettere:
sudo puppet agent --test --server=mypublic.example.com
Riferimenti
- certificate - How to add multiple dns names to my puppetmaster? - Server Fault
- Puppet hostname doesn't match server certificate - Server Fault
- Puppet err: Could not retrieve catalog from remote server: hostname was not match with the server certificate | AGIX Linux
- Troubleshooting — Documentation — Puppet Labs
- Puppet SSL explained - Masterzen's Blog