Làm cách nào tôi có thể nhận chứng chỉ Let Encrypt cho máy chủ không công khai?


9

Tôi có một máy chủ Apache riêng, chỉ có thể truy cập từ mạng LAN của tôi trên cổng 443, với chứng chỉ StartSSL.

Kể từ khi Firefox 51 được phát hành, tôi không thể kết nối với nó nữa vì chứng chỉ gốc StartSSL đã bị xóa khỏi cửa hàng ủy thác .

Tôi đã xem xét việc di chuyển sang Let Encrypt, nhưng dường như yêu cầu máy chủ HTTP phải đối mặt công khai. Có thể sử dụng Let Encrypt trong tình huống của tôi không?

Tôi thà tránh trả tiền cho một chứng chỉ SSL, nếu có thể.

Câu trả lời:


10

Nếu bạn kiểm soát DNS cho tên miền thì bạn có thể sử dụng phương thức thử thách dns-01 để chứng minh quyền sở hữu bằng cách tạo bản ghi TXT.

Điều này có thể được thực hiện bằng tay hoặc tự động. Tôi nghĩ ngay cả khách hàng certbot chính thức cũng hỗ trợ dns-01.

Google nhanh chóng chỉ cho tôi một loạt các hướng dẫn sử dụng các tập lệnh và ứng dụng khách khác nhau để tôi không lặp lại tất cả chúng ở đây. Điều này đặc biệt tự động hóa các chứng chỉ mạng nội bộ.


Bạn có chắc chắn rằng nó thực sự hoạt động trên mạng nội bộ? Điều gì sẽ xảy ra nếu tôi chỉ đơn giản ghi đè /etc/resolv.conf của máy chủ lưu trữ mà certbot chạy trên đó?
peterh - Phục hồi Monica

@peterh có, nó hoạt động trên mạng nội bộ theo tài liệu.
BE77Y

@peterh Tôi không chắc chắn những gì bạn đang cố gắng bằng cách ghi đè decv.conf. Bản ghi TXT cần được tạo trong DNS công cộng vì các máy chủ xác thực Let Encrypt, không phải máy khách certbot, cần có khả năng giải quyết bản ghi. Nếu tất cả xảy ra cục bộ thì việc xác nhận sẽ không có giá trị nhiều. Máy chủ mà chứng chỉ được cấp có thể hoàn toàn riêng tư.
Martijn Heemels

@MartijnHeemels Chà, bây giờ tôi không thể hiểu nhận xét cũ này của tôi nữa. Tôi tạo các mạng nội bộ bằng letencrypt bằng cách lừa DNS của nó trên một cách, nó hiển thị máy chủ thứ ba, với ip công khai , cho tất cả các yêu cầu * .intranet.mydomain - nhưng nó chỉ dành cho các máy chủ DNS gửi đi của letencrypt . Tôi đã nhận được IP của họ bằng cách tcpdump-ing lưu lượng DNS đến. Bind9 có cái tên "lượt xem" cho điều đó. Do đó, máy chủ thứ ba này có thể nhận được * .intranet.mydomain certs với cấu hình apache phức tạp được điều chỉnh cho điều đó. Sau đó, các khóa có thể được nhân đôi vào mạng nội bộ với các tập lệnh rsync.
peterh - Tái lập Monica

@MartijnHeemels Tôi đang làm điều này bởi vì tại thời điểm đó tôi gặp khó khăn trong việc tự động hóa ủy quyền dựa trên vùng của letencrypt. Có thể bây giờ nó sẽ hoạt động, nhưng thật lòng tôi không hài lòng lắm với letencrypt nói chung (vâng ... với những rắc rối của quá trình tự động hóa, dĩ nhiên tôi rất vui vì nó tồn tại) và tôi không muốn nó hoạt động trở lại , những gì tôi đã từng làm được. (Tôi nghĩ rằng tất cả chúng ta đều biết thái độ của các ông chủ về các nhiệm vụ "làm cho nó tốt hơn" như thế này.)
peterh - Tái lập Monica

5

Máy khách certbot có khả năng thực hiện thử thách DNS thủ công. Câu trả lời (hiện đang phổ biến thứ hai) được tìm thấy trong câu hỏi này Làm thế nào để sử dụng Xác thực thách thức DNS Encrypt DNS? có tất cả các chi tiết, và tôi chỉ thử nó là hoạt động.

Về cơ bản, bạn chạy lệnh này và làm theo hướng dẫn:

certbot -d site.your.dom.ain --manual --preferred-challenges dns certonly

0

Bạn đã đề cập rằng bạn đang sử dụng Apache, tuy nhiên nếu bạn không bị ràng buộc với nó thì có một đường dẫn rất dễ sử dụng Caddyserver .

Ở đó bạn chỉ phải xác định a Caddyfilevới nội dung sau:

example.com
tls {
    dns cloudflare
}

Đề cập đến nhà cung cấp DNS bạn đang sử dụng trong cấu hình và định cấu hình các khóa API bạn đang sử dụng thông qua các biến môi trường. Rút ra từ danh sách các nhà cung cấp được hỗ trợ từ các tài liệu .

Đó là tất cả những gì cần thiết. Đầu ra ở lần bắt đầu đầu tiên sẽ giống như:

Activating privacy features... 2019/10/21 13:36:48 [INFO][cache:0xc0001c8190] Started certificate maintenance routine
[INFO][cache:0xc000092730] Started certificate maintenance routine
2019/10/21 13:24:49 [INFO][example.com] Obtain certificate
2019/10/21 13:24:49 [INFO] [example.com] acme: Obtaining bundled SAN certificate
2019/10/21 13:24:50 [INFO] [example.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/876706285
2019/10/21 13:24:50 [INFO] [example.com] acme: Could not find solver for: tls-alpn-01
2019/10/21 13:24:50 [INFO] [example.com] acme: Could not find solver for: http-01
2019/10/21 13:24:50 [INFO] [example.com] acme: use dns-01 solver
2019/10/21 13:24:50 [INFO] [example.com] acme: Preparing to solve DNS-01
2019/10/21 13:24:50 [INFO] cloudflare: new record for example.com, ID XXX
2019/10/21 13:24:50 [INFO] [example.com] acme: Trying to solve DNS-01
2019/10/21 13:24:50 [INFO] [example.com] acme: Checking DNS record propagation using [127.0.0.11:53]
2019/10/21 13:24:50 [INFO] Wait for propagation [timeout: 2m0s, interval: 2s]
2019/10/21 13:24:50 [INFO] [example.com] acme: Waiting for DNS record propagation.
2019/10/21 13:24:52 [INFO] [example.com] acme: Waiting for DNS record propagation.
2019/10/21 13:24:55 [INFO] [example.com] The server validated our request
2019/10/21 13:24:55 [INFO] [example.com] acme: Cleaning DNS-01 challenge
2019/10/21 13:24:55 [INFO] [example.com] acme: Validations succeeded; requesting certificates
2019/10/21 13:24:56 [INFO] [example.com] Server responded with a certificate.
done.

Serving HTTPS on port 443
https://example.com

2019/10/21 13:36:48 [INFO] Serving https://example.com

Serving HTTP on port 80
http://example.com

2019/10/21 13:36:48 [INFO] Serving http://example.com
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.