¿Cómo agregar múltiples nombres DNS a mi puppetmaster?

16

my puppet.conf en el maestro

[master]
certname = myname.mydomain.com
ca_server = myname.mydomain.com
certdnsnames = puppet;puppet.local;myname.dyndns.org;hivemind.local;

para mi comprensión con los nombres certdns definidos, lo siguiente debería funcionar:

puppet agent --server myname.dyndns.org --test

pero me sale el siguiente error:

err: Could not retrieve catalog from remote server: hostname was not match with the server certificate

¿Cómo evitar este error? ¿Cómo definir correctamente los nombres certdns? He encontrado documentación diferente sobre esto, pero no hay un ejemplo simple. ii uso "," para la separación no puedo firmar en absoluto. También he visto una sintaxis como

certdnsnames = puppet:puppet.intra.myserver.fr,puppet.myserver.fr:puppet,puppet:puppet,puppet.intra.myserver.fr,puppet.myserver.fr

http://projects.puppetlabs.com/issues/5776

pero para mí no está claro cuándo agregar un "títere" y cuándo no.

c33s
fuente

Respuestas:

25

Para el beneficio de cualquier otra persona que tropiece con esta respuesta:

Debido a CVE-2011-3872 , Puppet ya no admite la certdnsnamesopción. De la documentación:

La configuración de certdnsnames ya no funciona después de CVE-2011-3872. Ignoramos el valor por completo. Para su propia solicitud de certificado, puede establecer dns_alt_names en la configuración y se aplicará localmente. No hay una opción de configuración para establecer nombres alternativos de DNS, o cualquier otro valor subjectAltName, para otro certificado de nodos. Alternativamente, puede usar la opción de línea de comando --dns_alt_names para establecer las etiquetas agregadas mientras genera su propia CSR.

Puede generar un certificado SSL para su servidor usando subjectAlternativeName como este:

$ puppet cert generate <puppet master's certname> --dns_alt_names=<comma-separated list of DNS names>
larsks
fuente
3
Nota adicional: antes de ejecutar puppet cert generate, elimine los archivos .pem para el puppet master en / var / lib / puppet / ssl / private_keys, / var / lib / puppet / ssl / ca / ​​firmado / y / var / lib / puppet / ssl / certs. Generar un nuevo certificado no está matando la conectividad a los clientes existentes, ya que verifican el certificado del puppetmaster utilizando el certificado de la CA, que descargaron en la primera conexión.
Erik Forsberg
99
Hola, gracias Lars del pasado. Acabas de responder mi pregunta.
larsks
2

Para Puppet 4+, use los siguientes comandos para cambiar los nombres de DNS aceptados para el certificado de puppetserver:

Cambie el nombre de los certificados existentes a * .backup:

mv /etc/puppetlabs/puppet/ssl/private_keys/$(hostname -f).pem{,.backup}
mv /etc/puppetlabs/puppet/ssl/ca/signed/$(hostname -f).pem{,.backup}
mv /etc/puppetlabs/puppet/ssl/certs/$(hostname -f).pem{,.backup}

generar un nuevo certificado (agregue los nombres alternativos que desee):

puppet cert generate $(hostname -f) --dns_alt_names=$(hostname -f),puppet

reiniciar puppetserver para usar nuevos certificados

service puppetserver restart
Phi Phi
fuente
1
  • En primer lugar, certdnsnameses una lista separada por dos puntos.
  • En segundo lugar, este error aparece porque el agente está contactando al maestro usando un nombre de host que no estaba incluido cuando se firmó el certificado: http://docs.puppetlabs.com/guides/troubleshooting.html
quanta
fuente
lo siento por no aceptar esta respuesta, tuve un problema de traducción con "dos puntos", así que la otra respuesta me ayudó simplemente mostrándome el carácter correcto :) pero gracias por su respuesta
c33s
0

De acuerdo a

puppet agent --genconfig

debe usar una lista separada por dos puntos (":" no ";").

Entonces debería ser

certdnsnames = 'puppet:puppet.local:myname.dyndns.org:hivemind.local'

HTH

cyberkov
fuente
0

Para agregar una entrada SAN al certificado del servidor de títeres, use:

systemctl stop puppetserver
puppetserver ca setup --subject-alt-names $(hostname -f),puppet
systemctl start puppetserver

puede que tenga que limpiar los centros existentes a través rm -rf $(puppet master --configprint ssldir), así

Greg Bray
fuente