¿Cómo puedo agregar un dominio personalizado a una SAN para un certificado para dominios de cónsul como active.vault.service.consul?

2

Supongamos que uno tiene un servicio proporcionado por el Cónsul, para el cual active.[name-of-service].service.consul es el enlace que proporciona al líder de host activo para ese servicio. ¿Cómo puedo configurar correctamente TLS para ese nombre de dominio .consul ?

Por ejemplo, supongamos que tengo un servicio HashiCorp Vault, para el cual HashiCorp Consul proporciona descubrimiento de servicio con el HashiCorp Consul DNS interfaz por active.vault.service.consul . Si hay más

He escuchado que la opción de configuración "-dominio" puede usarse para cambiar el TLD de .consul a .somethingelse. ¿Se puede cambiar a .subdomain.mymaindomain.com y aún funciona sin tener que contactar con el DNS corporativo? Si es así, podría potencialmente obtener un subdominio real para un servicio de cónsul / bóveda y configurar las consultas de DNS de nuestro cónsul para que respondan bajo ese subdominio. Eso nos permitiría utilizar certificados de servidor TLS reales y de confianza para proteger las comunicaciones.

Sin embargo, sin usar la función CA de Consul, parece difícil configurar un certificado que tenga active.vault.service.consul en una SAN.

¿Necesito usar una CA privada para esto?

El Cónsul tiene una página sobre cómo configurar el cifrado con TLS , pero parece ser más para autenticar clientes que para usar con nombres de dominio.

De todos modos, aparte de los certificados autofirmados, ¿cómo se consigue que TLS para URI como https://active.vault.service.consul:8200/sys/health funcione correctamente?

    
pregunta Nathan Basanese 05.04.2017 - 23:35
fuente

1 respuesta

0

//, Resulta que no solo puedes hacer esto, sino que, si se configura, permite la automatización de las direcciones IP virtuales internas.

Supongamos que su sitio tiene el dominio nathanbasanese.rocks . Y digamos que tu servicio es Redis.

Usted agregaría "domain": "consul.nathanbasanese.rocks" a su archivo de configuración de Cónsul, por ejemplo. %código%.

Luego, redirija las consultas de DNS con algo como DNSMasq (¡no olvide donar!) para cualquier cosa que use "consul.nathanbasanese.rocks" como su TLD para ir a su servidor Cónsul que se ejecuta en localhost.

Por ejemplo, puedes usar el siguiente /etc/consul/config.json en DNSMasq como contenido de tu 127.0.0.1#8600 .

  ##  // , This forwards DNS requests to the local Consul agent.
  ##  // , Check the following link for more details about why:
  ##  // , https://www.consul.io/docs/guides/forwarding.html#dnsmasq-setup
server=/consul/127.0.0.1#8600
server=/consul.nathanbasanese.rocks/127.0.0.1#8600

Luego, para cada nodo, obtenga un certificado con el /etc/dnsmasq.d/consulstuff del nodo como el valor node_name del certificado (asegúrese de configurar CN= s para que sea certificable según el estándar que lo guíe a través de su CA. usando el FQDN debería estar bien, por ejemplo, node_name ), y redis001.nathanbasanese.rocks como la SAN superior.

Si tienes 25 Redis detrás, el Cónsul responde con su (s) nombre (s) de nodo a active.redis.service.consul.nathanbasanese.rocks , bueno, necesitarás 25 certificados. Yay, seguridad.

He probado esto y funciona bastante bien en los servidores que tienen el agente de cónsul con la configuración anterior.

Puedes probar con el comando active.redis.service.consul.nathanbasanese.rocks , pasando el archivo curl -v de la entidad emisora de certificados al parámetro .cer de la entidad certificadora si te encuentras con problemas al confiar en una CA de prueba o algo así.

    
respondido por el Nathan Basanese 10.05.2017 - 01:15
fuente