2016-04-17 29 views
5

Tôi có một máy chủ NGINX nơi tôi đang cố gắng thêm SSL bằng cách sử dụng Let's Encrypt.Cách thêm chứng chỉ cho miền phụ bằng cách sử dụng Lets Encrypt

thiết lập phát triển của tôi là như sau:

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

Các sản như sau:

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

Vì vậy, trong trang mặc định nginx của tôi, tôi có hai khối một máy chủ để phát triển và khác phục vụ sản xuất

Tôi muốn cấp một chứng chỉ cho cả hai máy chủ.

Tôi biết theo trang web Encrypt của Lết lệnh này như sau

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

Nhưng điều này chỉ có thể thực hiện nếu SUBDOMAIN có cùng một webroot không đúng trong trường hợp của tôi.

Vậy làm thế nào tôi có thể thêm các CERT cho cả đây

Xin hãy giúp tôi ra

+0

Thời gian đưa ra phản hồi? –

Trả lời

1

chúng ta hãy Mã hóa phương pháp webroot sử dụng một tập tin trên thư mục webroot của bạn có tên là ".well tiếng/acme-thách thức" . Bạn có thể định cấu hình đoạn mã vị trí trên máy chủ của bạn và máy chủ chính để trỏ tới một webroot khác chỉ dành cho tệp này.

Cái gì như:

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

Và chỉ webroot của bạn như --webroot-path /etc/letsencrypt/webrootauth

discussion này có thể giúp

Hoặc bạn có thể sử dụng phương pháp độc lập và làm một số công việc bằng tay.

+0

Bạn có thể thêm quyền kiểm soát truy cập để thư mục này có thể đọc được trên thế giới (máy chủ thử thách có thể thay đổi ip), nếu bạn có một số trang web có quyền kiểm soát truy cập, như trang web phát triển hoặc trang quản trị bị hạn chế bởi mật khẩu hoặc ip. Thư mục này chỉ chứa thử thách/phản hồi trong một thời gian ngắn và có tên không thể đoán trước được, vì vậy không có thư mục bảo mật nào ở đây. –

9

Tôi sử dụng một webroot phổ biến trên tất cả các máy chủ ảo của tôi trên hộp nginx của tôi.

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

... và trong nginx Tôi có snippets/letsencrypt.conf:

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

... mà được bao gồm trong khối máy chủ của tôi cho mỗi trang web.

Các tệp trong thư mục nổi tiếng là tạm thời - chúng chỉ tồn tại đủ lâu để quá trình ủy quyền hoàn tất và sau đó được xóa.

Khi đăng ký thành công, tôi sau đó bao gồm định nghĩa Giấy chứng nhận trong khối máy chủ thông qua include ssl/example.com.conf; nơi tệp có chứa sau:

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

... cùng với sự liên quan nghe chỉ thị để kích hoạt SSL trên cổng 443 .

Bạn có thể bao gồm cùng một định nghĩa trong nhiều khối máy chủ.

Tôi có các tên miền phụ bổ sung là SAN trong chứng chỉ của mình và tôi có các khối máy chủ riêng biệt cho example.com, www.example.com và các tên miền phụ khác như click.example.com - tất cả đều sử dụng cùng một chứng chỉ.

+0

Tìm thấy điều này cực kỳ hữu ích. Tiết kiệm rất nhiều đánh máy và đơn giản hóa lệnh allowencrypt. Cảm ơn bạn!! – Gruzzles

Các vấn đề liên quan