2016-04-17 42 views
5

我有一個NGINX服務器,我嘗試使用Let's Encrypt添加SSL。如何使用允許加密爲子域添加證書

我的發展設置如下:

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

生產情況如下:

url : domain.in 
root: /var/www/production/html 
在我的nginx的默認頁面

所以我有兩個服務器塊一個用於開發和另一個用於生產

我想給兩個服務器一個證書。

我根據咱們加密網站的命令如下

CD /選擇/ letsencrypt ./letsencrypt-auto certonly -a根目錄 --webroot路徑=在/ usr /共享/ nginx的認識/ html -d example.com -d www.example.com

但是,只有SUBDOMAIN具有相同的webroot,在我的情況下不是這樣。

所以,我怎麼可以添加CERT的都在這裏

請幫我

+0

有時間給出反饋? –

回答

1

Let's加密根目錄方法使用名爲「好了,知道/ ACME挑戰」你的webroot目錄中的文件。您可以在開發者和主服務器上配置一個位置片段,以指向另一個僅用於該文件的webroot。

喜歡的東西:

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; 
     } 
    } 

並指向你的根目錄爲--webroot-path /etc/letsencrypt/webrootauth

discussion可以幫助

或者你可以使用獨立的方法,用手做了一些工作。

+0

如果您有一些具有訪問控制的網站,例如開發站點或受密碼或IP限制的管理站點,您可能會添加訪問控制以使該目錄可被全球讀取(挑戰服務器可能會更改IP)。 此目錄僅在短時間內持有質詢/響應,並且具有一個不可否認的名稱,所以在這裏沒有安全風險。 –

9

我在我的nginx盒子上的所有虛擬主機上使用了一個普通的webroot。

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

...和nginx的我有snippets/letsencrypt.conf

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

...它被包含在每個站點我的服務器模塊。

.well-known目錄中的文件是臨時的 - 它們只存在足夠長的時間才能完成授權過程,然後將其刪除。

一旦註冊成功,我則包括通過include ssl/example.com.conf;在服務器模塊證書的定義如該文件包含以下內容:

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

...隨着相關聽指令,以使在端口443上SSL 。

您可以在多個服務器塊中包含相同的定義。

我在我的證書中還有額外的子域作爲SAN,我有單獨的服務器塊example.com,www.example.com以及其他子域名如click.example.com - 全部使用相同的證書。

+0

發現這非常有用。節省大量輸入,並簡化了letsencrypt命令。謝謝!! – Gruzzles