Điểm:0

Làm cách nào để cho phép certbot có thể truy cập http://myapi.com/.well-known/acme-challenge/2d8dvxv8x9dvxd9v qua nginx?

lá cờ in

Tệp nginx.conf của tôi như sau:

dữ liệu www của người dùng;
worker_processes tự động;
pid /run/nginx.pid;
bao gồm /etc/nginx/modules-enabled/*.conf; 
# bao gồm ở trên mang đến các tệp mặc định sau:
#50-mod-http-image-filter.conf  
#50-mod-http-xslt-filter.conf  
#50-mod-mail.conf  
#50-mod-stream.conf

sự kiện {
        worker_connections 500;
}

http {
    bao gồm /etc/nginx/proxy.conf;
    limit_req_zone $binary_remote_addr zone=one:10m rate=100r/m;
    server_tokens tắt;

    gửi tệp trên;
    keepalive_timeout 30;
    client_body_timeout 10; client_header_timeout 10; gửi_thời gian chờ 10;

    thượng nguồn myapp{
        máy chủ 127.0.0.1:5000;
    }

    người phục vụ {
        nghe 443 ssl http2;
        nghe [::]:443 ssl http2;
        server_name myapi.com;
        ssl_certificate /etc/letsencrypt/live/myapi.com/fullchain.pem; # được quản lý bởi Certbot
        ssl_certificate_key /etc/letsencrypt/live/myapi.com/privkey.pem; # được quản lý bởi Certbot
        bao gồm /etc/letsencrypt/options-ssl-nginx.conf; # được quản lý bởi Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # được quản lý bởi Certbot

        add_header X-Frame-Options TỪ CHỐI;
        add_header X-Content-Type-Options nosniff;


        #Chuyển hướng tất cả lưu lượng truy cập
        địa điểm / {
            proxy_pass http://myapi;
            giới hạn vùng_req = một cụm = 10;
        }
    }
}

tôi đã cài đặt certbotcertbot-nginx (ubuntu).

SSL đang hoạt động tốt. Tường lửa chỉ cho phép cổng 443.

Tôi đang cố gia hạn chứng chỉ certbot bằng lệnh: sudo certbot gia hạn --dry-run

Điều này cố gắng xác minh rằng tôi sở hữu miền bằng cách yêu cầu http://myapi.com/.well-known/acme-challenge/2d8dvxv8x9dvxd9v (lưu ý: Tôi đã làm xáo trộn giá trị khóa 2d8dvxv8x9dvxd9v vì đây là giá trị riêng tư)

Nhưng lần này hết rồi Vì vậy, tôi đã bật cổng 80 và thêm mục máy chủ bổ sung sau:

   người phục vụ {
         nghe 80;
         server_name myapi.com;
         trả lại 301 https://$host$request_uri;
      }

Bây giờ lệnh gia hạn certbot (sudo certbot gia hạn --dry-run) có thể gia hạn chứng chỉ. Thật kỳ lạ, ngay cả khi tôi xóa khối máy chủ này, quá trình gia hạn certbot vẫn hoạt động tốt.

  1. Đường dẫn .well-known/acme-challenge ở đâu? Nó có được tạo/xóa khi đang di chuyển không?

  2. Khi tôi xóa khối máy chủ cho cổng 80, thì nginx có thể gia hạn chứng chỉ như thế nào (vì nó cần cổng 80 cho thử thách certbot)?

Gerard H. Pille avatar
lá cờ in
Hãy để máy chủ trên cổng 80 chỉ trả lời các yêu cầu cho /.well-known/acme-challenge. Trang web của bạn sẽ an toàn hơn nếu bạn không chuyển hướng http sang https.
lá cờ in
Nhưng vị trí của `/.well-known/acme-challenge` là gì?
Gerard H. Pille avatar
lá cờ in
Tài liệu gốc của máy chủ nginx của bạn. Tôi dường như nhớ certbot hỏi nơi đặt nó.
lá cờ in
Có bất kỳ cấu hình nào mà tôi có thể kiểm tra điều này không?
Gerard H. Pille avatar
lá cờ in
Tất nhiên: cấu hình nginx của bạn. Không phải là /var/www/html mặc định sao? Tìm lệnh "root" trong cấu hình của bạn hoặc tham số dòng lệnh "p" khi bắt đầu nginx.
lá cờ in
Không chắc chắn - Tôi đã dán nội dung trên tệp nginx.conf của mình trong câu hỏi - nó không nói gì về/var/www/html
Gerard H. Pille avatar
lá cờ in
Bạn đã dán nginx.conf, nhưng chưa dán các cấu hình đi kèm. Kiểm tra "man nginx". Nó nói rằng /usr/share/nginx là mặc định. Tôi có chỉ thị gốc trong cấu hình của mình trỏ đến/var/www/html.
lá cờ in
Có, vừa mới kiểm tra cái này, "man nginx" nói rằng /usr/share/nginx là mặc định. Nhưng bạn đã kiểm tra những điều sau đây ở đâu? `Tôi có chỉ thị gốc trong cấu hình của mình trỏ đến /var/www/html`
Gerard H. Pille avatar
lá cờ in
Bằng cách tìm kiếm các tệp trong /etc/nginx. Tôi đã tìm thấy "./sites-available/default: root /var/www/html;"
lá cờ in
Như được hiển thị trong nội dung tệp nginx.config của tôi, không có bao gồm các trang có sẵn/mặc định - Tôi nghĩ điều này cho thấy rằng mặc định của tôi là/usr/share/nginx
Gerard H. Pille avatar
lá cờ in
certbot sẽ tạo tệp, xóa tệp khi hoàn tất. Bạn có thể kiểm tra ngày sửa đổi của thư mục sau đó.
lá cờ in
Ok có ý nghĩa. Vậy tôi có thể thay đổi dòng này `return 301 https://$host$request_uri;` thành `location / { root /usr/share/nginx; }`.
lá cờ in
Tôi hơi ngạc nhiên khi phát hiện ra rằng nếu tôi xóa máy chủ thứ 2 (nghe trên 80), thì ngay cả khi đó, việc gia hạn certbot vẫn hoạt động. Vì vậy, tôi không cần khối máy chủ thứ 2. Nhưng tôi tự hỏi làm thế nào để certbot có thể truy cập điểm cuối. Điều này làm tôi bối rối.
Gerard H. Pille avatar
lá cờ in
Có lẽ http://myapi đang cung cấp thử thách acme? Hay bạn quên khởi động lại nginx?
Gerard H. Pille avatar
lá cờ in
"location / { root /usr/share/nginx; }" sẽ cho phép truy cập mọi thứ trong /usr/share/nginx.
lá cờ in
Tôi đã khởi động lại hệ thống cũng như quá trình gia hạn certbot hoạt động (Có vẻ như tất cả những gì nó cần là cổng 80 để mở trên tường lửa). Tôi cũng đã xóa tất cả các khối mã máy chủ và quá trình gia hạn certbot vẫn hoạt động.
Gerard H. Pille avatar
lá cờ in
Sau đó, một cái gì đó bị thiếu trong cấu hình của bạn. /etc/nginx/proxy.conf chứa gì?
lá cờ in
Tôi cũng ngạc nhiên. `proxy_redirect tắt; proxy_set_header Máy chủ lưu trữ $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; client_max_body_size 10m; khách_thân_đệm_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffers 32 4k;`
lá cờ in
Certbot có thể tạm thời khởi động máy chủ của chính nó nhưng tôi không thể tìm thấy bất kỳ tài liệu tham khảo nào cho việc này.
Gerard H. Pille avatar
lá cờ in
Vì vậy, làm thế nào để bạn chạy certbot? Khi tôi chạy nó, nó hỏi tôi có muốn sử dụng một máy chủ hiện có không hay nó phải khởi động một máy chủ? Tôi không biết điều gì xảy ra với "chạy khô".
Gerard H. Pille avatar
lá cờ in
Đính chính: Bản thân tôi không sử dụng certbot, tôi đang sử dụng "certbot-auto".
lá cờ in
Đây là lệnh gia hạn `Sudo certbot refresh --dry-run`
Gerard H. Pille avatar
lá cờ in
Không thực sự, đó là một thử nghiệm để xem nếu gia hạn sẽ làm việc. Đồng thời, tôi đã đọc tài liệu của certbot. Bắt đầu máy chủ web của riêng mình phải là mặc định. Kiểm tra "man certbot".
lá cờ in
Nếu bạn muốn sửa đổi câu trả lời thì tôi có thể đánh dấu là đã trả lời.
Gerard H. Pille avatar
lá cờ in
Tôi sẽ thử. Tuy nhiên, vì bạn chỉ chạy "dry-run" nên bạn vẫn đang sử dụng chứng chỉ cũ?
lá cờ in
Chạy khô mô phỏng quá trình thực tế
Gerard H. Pille avatar
lá cờ in
"--dry-run Thực hiện chạy thử ứng dụng khách, lấy chứng chỉ thử nghiệm (không hợp lệ) nhưng không lưu chúng vào đĩa."
lá cờ in
Có, đảm bảo rằng khi lệnh gia hạn tự động chạy qua bộ lập lịch (từ công việc định kỳ tự động hoặc qua dịch vụ auto systemd) thì sẽ không có bất ngờ.
Điểm:1
lá cờ in

Bạn cần một tường lửa cho phép truy cập trên cổng 80 (http), certbot sẽ khởi động một máy chủ web để cung cấp tệp acme-challenge từ miền của bạn.

lá cờ in
Tôi đã làm như vậy và nó hoạt động, tôi đã cập nhật câu hỏi với thử thách.
lá cờ in
Tôi chỉ muốn phục vụ các yêu cầu https và chặn tất cả các yêu cầu http, ngoài việc gia hạn certbot. Thay đổi tôi cần thực hiện đối với nginx.config là gì?
Gerard H. Pille avatar
lá cờ in
Bạn cũng có thể yêu cầu tường lửa loại bỏ các yêu cầu cổng 80 khi certbor đã chạy. Tốt hơn nhiều so với việc nginx xử lý nó.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.