Tôi có thể sử dụng Ghim khóa công khai với LetsEncrypt không?


10

Tôi có thể thiết lập Khóa công khai khi tôi thiết lập cronjob để gia hạn chứng chỉ LetsEncrypt sau mỗi 30 ngày không?

Nếu chứng chỉ được gia hạn thì Khóa công khai cũng được gia hạn phải không?

Câu trả lời:


12

Một số lời cảnh báo để bắt đầu:

  • Biết những gì bạn đang làm, nếu bạn dự định thực hiện HPKP.
  • Nếu bạn không làm đúng hoặc "nếu điều xấu xảy ra", không thuộc quyền kiểm soát của bạn, bạn có thể khiến tên miền của mình không sử dụng được.
  • Hãy chắc chắn kiểm tra thiết lập của bạn với một tên miền không quan trọng hoặc với thời gian bộ đệm rất ngắn, chẳng hạn như mười giây chẳng hạn.
  • Hãy suy nghĩ về những loại certs bạn muốn ghim: Root, trung gian, lá ...
  • Hãy suy nghĩ xem có hợp lý không khi ghim một cơ quan cấp chứng chỉ (dự phòng) khác, đó là chứng chỉ trung gian và chứng chỉ lá của bạn.
  • An toàn tốt hơn xin lỗi: Hãy suy nghĩ xem có hợp lý không khi ghim một CA / cert dự phòng khác, để có hai cái.
  • Nếu những điểm và câu hỏi này nghe có vẻ "mới" đối với bạn: Đọc HPKP là gì và các bẫy và cảnh báo phổ biến, trước khi bạn thực hiện điều này.

Tôi có thể sử dụng Ghim khóa công khai với LetsEncrypt không?

  • Đúng.

Nếu chứng chỉ được gia hạn thì Khóa công khai cũng được gia hạn phải không?

  • Điều này phụ thuộc vào chứng chỉ mà bạn đang đề cập đến và chứng chỉ nào bạn đang ghim.

9

Sẽ lặp lại mọi thứ mà gf_ đã nói.

Tuy nhiên, để trả lời câu hỏi, có bạn có thể.

Theo mặc định, Let Encrypt tạo lại khóa và chứng chỉ khi gia hạn. Điều này làm cho việc triển khai HPKP trở nên khó khăn nếu bạn muốn ghim vào chiếc lá, điều mà bạn có thể nên làm trong trường hợp thay đổi trung gian ( giống như đã làm trong tháng 3 năm 2016 ).

Vì vậy, bạn có một số tùy chọn xung quanh điều này nếu bạn vẫn muốn làm HPKP:

  1. Sử dụng CSR cố định của riêng bạn thay vì máy khách tiêu chuẩn tạo CSR cho bạn mỗi lần để khóa lá không thay đổi. Bài đăng trên blog này giải thích cách thực hiện việc này một cách cụ thể vì tác giả sử dụng HPKP.
  2. Sử dụng các hạn sử dụng HPKP ngắn và gia hạn trong thời gian hết hạn đó và chính sách thay đổi để có cả khóa cũ và khóa mới trước khi thực sự thay đổi chứng chỉ, với đủ thời gian để bất kỳ khách truy cập nào có thể chọn chính sách mới.
  3. Ghim gốc Let Encrypt thay vì lá hoặc cert.

1
Bổ sung tốt, +1.
gf_

Có an toàn để ghim gốc? Đối với MITM, thật dễ dàng để sử dụng chứng chỉ Let Encrypt của riêng anh ấy.
melbic

2
Làm thế nào là "thực sự dễ dàng" cho kẻ tấn công để có được một chứng chỉ cho tên miền của bạn bằng cách sử dụng Let Encrypt? Không biết bất kỳ cách nào để làm điều đó. Tuy nhiên, thể với bất kỳ CA nào nếu họ có lỗi trong quy trình xác thực tên miền. Bằng cách ghim root LE, bạn đã giảm đáng kể bề mặt tấn công của mình xuống chỉ để Let Encrypt trái ngược với mọi CA trên thế giới. Tôi vẫn không an toàn như lá ghim tôi đồng ý nhưng điều đó giới thiệu rủi ro riêng của nó vì vậy phụ thuộc vào định nghĩa của bạn về "an toàn".
Barry Pollard

Nói rằng tôi nghĩ có những rủi ro MASSIVE đối với HPKP - chủ yếu là từ góc độ tự sát - vì vậy không phải là một người hâm mộ. Nếu bạn quyết định thay đổi CA, hoặc thay đổi đường dẫn chứng chỉ (ví dụ do khấu hao SHA-256) hoặc khẩn cấp phải cấp lại chứng chỉ hoặc khóa dự phòng bị xâm phạm / mất hoặc người thiết lập lá và người tiếp theo không nhận ra họ sử dụng HPKP và / hoặc không biết về nó. HPKP cũng không bảo vệ chống lại rễ cây địa phương như Superfish. Vì vậy, đối với hầu hết các trang web, HPKP, quá phức tạp và, IMHO, không đáng để bảo vệ thêm cho lợi ích bảo mật được thêm vào. Nhưng đó chỉ là ý kiến ​​của tôi.
Barry Pollard

Ok, tôi chỉ hỏi vì tôi nghĩ rằng tất cả các chứng chỉ LE đều có cùng chứng chỉ gốc. Vì vậy, nếu bạn ghim root người khác bằng chứng chỉ LE khác, bạn chỉ có thể sử dụng MITM và giả mạo trong chứng chỉ của chính nó. Bạn có hiểu ý tôi không?
melbic

5

Tôi chỉ thực hiện điều này bằng cách sử dụng máy khách bị mất nước với xác nhận dns01. Móc dns01 là certzure vì DNS của chúng tôi được lưu trữ trong Azure.

Chỉnh sửa: khi tôi nói về khóa riêng, rõ ràng tôi luôn có nghĩa là bạn chỉ biến các bộ phận khóa công khai thành chân. Các khóa riêng, như tên cho thấy, phải luôn được giữ riêng tư. Xem móc của riêng tôi để biết chi tiết thực hiện.


Bạn cần cuộn qua khóa riêng để thực hiện điều này. Nghĩa là, bạn luôn có khóa riêng hiện tại (gọi là A) và khóa riêng trong tương lai (gọi là B) trong tay, để bạn có thể thêm cả hai vào chân của mình. Vì vậy, tại thời điểm này, các chân của bạn là A và B. Khi ngày gia hạn chứng chỉ đến, khóa riêng A trở nên lỗi thời và B trở nên sống động. Đồng thời bạn nhận được một khóa riêng trong tương lai mới, hãy gọi nó là C. Bạn tạo lại danh sách mã pin của mình để bây giờ nó chứa B và C. Vì vậy, đó là cách bạn cuộn các khóa riêng của mình. mất nước hỗ trợ này bây giờ .

Ngoài ra, bạn cần một cái móc được gọi mỗi khi bạn làm mới certs của mình và do đó cuộn qua các khóa riêng của bạn. Tôi thực hiện điều này một mình .

Cuối cùng, nếu tôi hiểu đúng, bạn phải chắc chắn rằng:

HPKP age x 2 < days between cert renewals

Ví dụ: nếu tuổi HPKP của bạn là 50 ngày và bạn gia hạn certs cứ sau 30 ngày, một khách hàng truy cập trang web của bạn vào ngày thứ nhất sẽ bị kẹt với khóa riêng A và B, và bạn đã chuyển sang B và C vào ngày 31. máy chủ có B và C, máy khách có A và B, có một trận đấu ngay cả vào ngày 50 và máy khách mở trang web một cách chính xác.

NHƯNG hãy xem tuổi HPKP là 70 ngày. Bạn gia hạn certs cứ sau 30 ngày và khách hàng đã truy cập trang web của bạn vào ngày đầu tiên, vì vậy, một lần nữa, nó chỉ có khóa riêng A và B. Bạn đã chuyển sang B và C vào ngày 31, và chuyển sang C và D vào ngày 61 Máy chủ của bạn có C và D, máy khách có A và B, không có kết quả trùng khớp và máy khách được cung cấp ngón giữa từ ngày 61 đến ngày 71, khi chính sách HPKP của nó hết hạn.


Một tùy chọn khác, có thể an toàn hơn và chắc chắn đơn giản hơn nhiều là sử dụng cùng một khóa riêng mỗi lần và tạo một hoặc một vài khóa riêng dự phòng, sau đó mã hóa chúng vào cấu hình HPKP của bạn và được thực hiện với nó.


Vâng, đó là khó khăn và có thể có những cảnh báo tôi chưa từng nghĩ đến, nhưng chúng ta sẽ thấy trong thời gian dài. Rõ ràng là tôi đã triển khai nó trên một tên miền phụ không chính xác với tuổi HPKP ngắn (15 ngày) để nó không gây ra rắc rối lớn.


Chỉnh sửa: Tôi đã viết một vài tập lệnh để giúp bạn thiết lập HPKP với Let Encrypt và khử nước bằng Nginx:

HPKPinx


3
Tôi quyết định có những điều tốt nhất của cả hai thế giới. Tự động cuộn khóa riêng + khóa riêng tĩnh. Có thể viết một blogpost về nó nếu bất cứ ai quan tâm.
bviktor

1
Nếu bạn làm điều này, xin vui lòng chỉnh sửa bài viết của bạn và chèn liên kết - cảm ơn!
gf_

Cảm ơn, tôi sẽ cố gắng hết sức để hoàn thành việc này hoặc tuần tới
bviktor

2
Liên kết được thêm vào. Tài liệu chưa khan hiếm, nhưng mã ở đó để bạn có thể thử và hack nó.
bviktor
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.