Come posso aggiungere un dominio personalizzato a una SAN per un certificato per domini di console come active.vault.service.consul?

2

Diciamo che uno ha un servizio fornito da Consul, per cui active.[name-of-service].service.consul è il link che fornisce al leader host attivo per quel servizio. Come faccio a impostare correttamente TLS con quel nome di dominio .consul ?

Ad esempio, supponiamo di possedere un servizio HashiCorp Vault, per il quale HashiCorp Consul fornisce servizi di scoperta con il HashiCorp Consul DNS interfaccia di active.vault.service.consul . Se più

Ho sentito che l'opzione di configurazione "-domain" può essere usata per cambiare il TLD da .consul a .somethingelse. Può essere modificato in .subdomain.mymaindomain.com e continuare a funzionare senza raggiungere il DNS aziendale? In tal caso, si potrebbe potenzialmente ottenere un sottodominio reale per un servizio di console / vault e configurare le nostre query DNS di console per rispondere a tale sottodominio. Ciò ci consentirebbe di utilizzare certificati server TLS reali e affidabili per la protezione delle comunicazioni.

Tuttavia, senza utilizzare la funzione CA di Consul, sembra difficile impostare un certificato che abbia active.vault.service.consul su una SAN.

Devo utilizzare una CA privata per questo?

Consul ha una pagina su come configurare la crittografia con TLS , ma sembra essere più per l'autenticazione dei client che per l'uso con i nomi di dominio.

Ad ogni modo, a parte i certificati autofirmati, come si ottiene TLS per gli URI come https://active.vault.service.consul:8200/sys/health per funzionare correttamente?

    
posta Nathan Basanese 05.04.2017 - 23:35
fonte

1 risposta

0

Risulta che non solo puoi farlo, ma se impostato, consente l'automazione degli indirizzi IP virtuali interni.

Supponiamo che il tuo sito abbia il dominio nathanbasanese.rocks . E diciamo che il tuo servizio è Redis.

Aggiungi "domain": "consul.nathanbasanese.rocks" al tuo file di configurazione di Consul, ad es. %codice%.

Quindi, reindirizza le query DNS usando qualcosa come DNSMasq (non dimenticare di donare!) per qualsiasi cosa che usi "consul.nathanbasanese.rocks" come TLD per andare al tuo server Console in esecuzione su localhost.

Ad esempio, potresti utilizzare il seguente /etc/consul/config.json in DNSMasq come contenuto del tuo 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

Quindi, per ogni nodo, ottieni un certificato con /etc/dnsmasq.d/consulstuff del nodo come valore node_name del certificato (assicurati di configurare CN= s per essere certificabile da qualunque standard ti porti attraverso la CA. usando il FQDN dovrebbe andare bene, ad esempio node_name ) e redis001.nathanbasanese.rocks come SAN superiore.

Se hai 25 Redis dietro che Consul risponde con il loro nodename (i) a active.redis.service.consul.nathanbasanese.rocks , beh, avrai bisogno di 25 certs. Sì, sicurezza.

L'ho provato e funziona abbastanza bene sui server che hanno l'agente console con la configurazione di cui sopra.

Puoi testare con il comando active.redis.service.consul.nathanbasanese.rocks , passando il file curl -v dell'autorità di certificazione nel parametro .cer curl se riscontri problemi con la fiducia in una CA di prova o qualcosa del genere.

    
risposta data 10.05.2017 - 01:15
fonte