Điểm:1

Cách bật HTTPS cho thị trường của tôi

lá cờ de

Tôi đang xây dựng một nền tảng thị trường cho phép nhiều người bán bán hàng cho khách hàng của họ. Hiện tại tôi phục vụ các cửa hàng trên miền của riêng mình như vậy https://storeA.mydomain.com hoặc https://storeB.mydomain.com (Tôi có thể sử dụng tên miền phụ để phân biệt cửa hàng nào sẽ được phục vụ).Tuy nhiên, tôi muốn cho phép người bán của mình sử dụng tên miền của riêng họ trên nền tảng của tôi trong khi vẫn có thể bảo mật trang web qua HTTPS, làm cách nào để tôi có thể tự động đạt được điều này? Trước đây, tôi đã thử CNAME thành CNAME nhưng điều này không cho phép HTTPS.

CHỈNH SỬA: Nếu bạn biết về bất kỳ dịch vụ trung gian nào (cung cấp một số loại mặt nạ tên miền) mà người bán có thể sử dụng thì điều đó thật tuyệt!

Lex Li avatar
lá cờ vn
Trừ khi bản thân công ty của bạn là một CA hoặc có mối quan hệ chặt chẽ với một CA để bạn có thể yêu cầu chứng chỉ cho khách hàng của mình về hành vi của họ theo các hạn chế nghiêm ngặt (Cloudflare thực hiện điều đó), bạn không thể hỗ trợ HTTPS cho các miền tùy chỉnh không thuộc sở hữu của bạn . Giải pháp thay thế là yêu cầu khách hàng của bạn tự yêu cầu chứng chỉ và chia sẻ với bạn, nhưng đó cũng là một quá trình dài. Bất cứ khi nào bảo mật là mối quan tâm lớn nhất, thì việc tự động hóa các bước là gần như không thể.
Owen avatar
lá cờ de
@LexLi Tôi đã thấy tính năng chứng chỉ của Cloudflare, nhưng nó rất tốn kém (là một phần trong gói Doanh nghiệp của họ) và thật không may, không phải là một tùy chọn cho các công ty khởi nghiệp phần mềm nhỏ.
lá cờ jp
@LexLi: Bạn đã bao giờ nghe nói về Let's Encrypt & Certbot chưa?
Lex Li avatar
lá cờ vn
@EsaJokinen Tôi chắc chắn biết điều đó. Đó vẫn là một quy trình thủ công, vì bất kỳ khách hàng nào cũng phải sửa đổi DNS từ phía mình để hỗ trợ (và các nhà cung cấp DNS khác nhau yêu cầu các bước rất khác nhau), mà Cloudflare với tư cách là nhà cung cấp dịch vụ DNS có thể tự động hóa.
Owen avatar
lá cờ de
Tôi đã thực hiện một số thao tác đào và tìm thấy giải pháp khả thi này bằng Caddy, nhưng tôi chưa thử nghiệm nó. (https://www.indiehackers.com/post/generating-ssl-certs-on-demand-with-caddy-server-69ad07a3fb)
Điểm:2
lá cờ jp

Có thể tự động hóa việc này với Let's Encrypt bằng Certbot, nhưng tôi e rằng không có sẵn giải pháp sẵn sàng sử dụng nào cho việc này. Do đó, nó yêu cầu một số kịch bản và bạn có thể cần phải thuê một người nào đó khi bạn đặt câu hỏi này.

tôi sẽ đề nghị một cái gì đó như thế này (ví dụ dành cho máy chủ web Apache 2.4):

  1. Tạo một cấu hình tổng hợp tất cả các điểm http://*/.well-known/acme-challenge/ vào cùng thư mục với bất kỳ tên miền nào và với máy chủ ảo mặc định cho phần còn lại. Điều này là có thể với một toàn cầu bí danh mà có thể được đặt trong /etc/apache2/conf-enabled/acme-challenge.conf:

    <IfModule alias_module>
      Alias /.well-known/acme-challenge/ /var/www/letsencrypt/.well-known/acme-challenge/
    </IfModule>
    
  2. Cho phép khách hàng của bạn nhập miền tùy chỉnh của họ để xác thực và lưu thông tin ở đâu đó, với tham chiếu đến đúng khách hàng. Một cơ sở dữ liệu sẽ là lý tưởng cho việc đó, phải không. Có thể giới hạn điều này ở một tên máy chủ tùy chỉnh (& www) cho mỗi khách hàng.

  3. Hướng dẫn khách hàng của bạn trỏ tên miền của họ đến đúng địa chỉ IP. Trong trường hợp tên miền phụ, một CNAME bản ghi sẽ hoạt động, nhưng tại đỉnh miền bạn sẽ cần cung cấp hướng dẫn cho một Một ghi.

    Ở đây, các ví dụ đơn giản giả định rằng mọi miền đều có cả hai ví dụ.comwww.example.com, nhưng bạn có thể sửa đổi điều này theo yêu cầu của mình.

  4. không khởi chạy thử thách HTTP-01 ngay lập tức, nhưng hãy tạo một tập lệnh được khởi chạy với một công việc lương thấp hoặc một hẹn giờ hệ thống. Trước tiên, tập lệnh phải kiểm tra xem các miền đang chờ xác thực có trỏ đến máy chủ của bạn hay không và chỉ khởi chạy thử thách ACME cho các miền đáp ứng điều kiện. Nếu không, ai đó có thể lạm dụng tính năng này và khiến máy chủ của bạn thực hiện các xác thực Letâs Encrypt không cần thiết.

    #!/bin/bash
    MYSERVERIP="192.0.2.123"
    
    nếu [ "$#" -ne 1 ]; sau đó
      printf "\n%s\n\n" "Sử dụng: $0 example.com" >&2
      thoát 1
    fi
    
    lưu trữ "$1" 2>&1 > /dev/null
    nếu [ $? -ne 0 ]; sau đó
      printf "\n%s\n\n" "Miền đã cho không phải là một FQDN hợp lệ." >&2
      thoát 1
    fi
    IPAPEX=$(đào "$1" +ngắn | đuôi -n 1)
    IPWWW=$(dig "www.$1" +short | tail -n 1)
    
    nếu [ "$IPAPEX" = "$MYSERVERIP" ]; sau đó
      nếu [ "$IPWWW" = "$MYSERVERIP" ]; sau đó
        certbot certonly --quiet --webroot -w /var/www/letsencrypt -d $1 -d www.$1
        nếu [ $? -ne 0 ]; sau đó
          printf "\n%s\n\n" "Certbot thất bại với thử thách HTTP-01." >&2
          thoát 1
        fi
      khác
        printf "\n%s\n\n" "Không thành công: www.$1 không trỏ tới $MYSERVERIP." >&2
        thoát 1
      fi
    khác
      printf "\n%s\n\n" "Không thành công: $1 không trỏ tới $MYSERVERIP." >&2
      thoát 1
    fi
    
  5. Khi quá trình xác thực hoàn tất, tập lệnh cũng có thể thêm cấu hình vào máy chủ web. Bạn có thể sử dụng một vĩ mô, ví dụ. /etc/apache2/conf-enabled/custdomain-macro.conf:

    <Macro CustomWebShopDomain $customer $domain>
        <VirtualHost *:80>
            ServerName $domain
            ServerAlias www.$domain
            Redirect permanent / https://$domain/
        </VirtualHost>
        <VirtualHost *:443>
            ServerName $domain
            SSLEngine on
            SSLCertificateFile /etc/letsencrypt/live/$domain/fullchain.pem
            SSLCertificateKeyFile /etc/letsencrypt/live/$domain/privkey.pem
            SSLVerifyClient None
            DocumentRoot /path/to/webshop/$customer
        </VirtualHost>
        <VirtualHost *:443>
            ServerName www.$domain
            SSLEngine on
            SSLCertificateFile /etc/letsencrypt/live/$domain/fullchain.pem
            SSLCertificateKeyFile /etc/letsencrypt/live/$domain/privkey.pem
            SSLVerifyClient None
            Redirect permanent / https://$domain/
        </VirtualHost>
    </Macro>
    

    Trong trường hợp này, việc thêm miền khách hàng mới sẽ đơn giản:

    Sử dụng CustomWebShopDomain customerid example.com
    

    Tập lệnh của bạn có thể thêm dòng này vào cấu hình và sau đó tải lại máy chủ web Apache:

    printf "%s\n" "Sử dụng CustomWebShopDomain $2 $1" \
      >> /etc/apache2/conf-enabled/custdomain-use.conf
    systemctl tải lại apache2
    

Đảm bảo xóa sạch các miền đã hết hạn

Certbot thêm tất cả các miền để gia hạn tự động. Nếu những lần gia hạn đó bắt đầu không thành công, bạn không muốn giữ những miền đó trong cấu hình mãi mãi. Tốt nhất là tự động hóa việc loại bỏ, tức là.

  1. Xóa cấu hình Certbot /etc/letsencrypt/renewal/example.com
  2. Gỡ bỏ Sử dụng CustomWebShopDomain customerid example.com dòng.

Đă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.