2016-04-17 37 views
5

Ho un server NGINX dove sto cercando di aggiungere SSL usando Let's Encrypt.Come aggiungere il certificato per il sottodominio usando Lets Encrypt

mie impostazioni di sviluppo sono i seguenti:

url : dev.domain.in 
root: /var/www/dev/html 

La produzione è la seguente:

url : domain.in 
root: /var/www/production/html 

Così nella mia pagina di default nginx ho due blocchi un server per lo sviluppo e un altro per la produzione

Voglio dare un certificato per entrambi i server.

So secondo il sito web del Encrypt lasciare che il comando è il seguente

cd/opt/letsencrypt ./letsencrypt-auto certonly -a Webroot --webroot-path =/usr/share/nginx/html -d example.com -d www.example.com

Ma questo può essere fatto solo se il sottodominio ha lo stesso Webroot, che non è vero nel mio caso.

Così come posso aggiungere il CERT sia qui

Please help me out

+0

È ora di dare un feedback? –

risposta

1

Mettiamoci Encrypt metodo Webroot utilizza un file nella directory webroot denominata "beh noto/acme-sfida" . È possibile configurare uno snippet di posizione sul proprio server di sviluppo e sul server principale in modo che punti a un altro webroot solo per questo file.

Qualcosa di simile:

location /.well-known/acme-challenge { 
     alias /etc/letsencrypt/webrootauth/.well-known/acme-challenge; 
     location ~ /.well-known/acme-challenge/(.*) { 
      add_header Content-Type application/jose+json; 
     } 
    } 

e puntare il Webroot come --webroot-path /etc/letsencrypt/webrootauth

Questo discussion può aiutare

Oppure si può usare il metodo standalone e fare qualche lavoro a mano.

+0

È possibile aggiungere il controllo dell'accesso per rendere questa directory leggibile dal mondo (i server challenge potrebbero cambiare ip), se si dispone di alcuni siti con controllo degli accessi, come siti di sviluppo o siti di amministrazione limitati da password o ip. Questa directory contiene solo la sfida/risposta per un breve periodo di tempo, e con un nome non prevedibile, quindi nessun risc rica di sicurezza qui. –

9

Uso un webroot comune su tutti i miei host virtuali sulla mia casella nginx.

/opt/certbot/certbot-auto certonly --webroot --agree-tos -w /srv/www/letsencrypt/ \ 
-d example.com,www.example.com 

... e in nginx ho snippets/letsencrypt.conf:

location ~ /.well-known { 
    root /srv/www/letsencrypt; 
    allow all; 
} 

... che viene incluso nel mio blocco del server per ogni sito.

I file nella directory .well-known sono temporanei, esistono solo per il tempo necessario al completamento del processo di autorizzazione e vengono quindi rimossi.

Una volta che la registrazione è riuscita, ho poi includono la definizione certificato nel blocco di server tramite include ssl/example.com.conf; in cui tale file contiene il seguente:

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; 
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; 

... insieme con la relativa ascoltare le direttive per abilitare SSL sulla porta 443 .

È possibile includere la stessa definizione in più blocchi del server.

ho sottodomini aggiuntivi come le SAN nel mio certificato come bene e ho blocchi di server separati per example.com, www.example.com e anche altri sottodomini come click.example.com - il tutto utilizzando lo stesso certificato.

+0

Trovato estremamente utile. Salva un sacco di digitazione e semplifica il comando letsencrypt. Grazie!! – Gruzzles