Câu hỏi quyết định phần lớn điều này không phải là bạn mã hóa kho lưu trữ như thế nào. Mà là khóa riêng CA của bạn có thể rời khỏi vùng chứa của nó hay không. Nếu khóa là một tệp, bạn có thể sao chép toàn bộ thư mục CA vào một khối được mã hóa và xong trong vài phút. Nếu nó sống trong HSM hoặc token đánh dấu khóa là không thể xuất, bản sao đó không tồn tại, và kế hoạch của bạn trở thành kế hoạch về quy trình bọc và khôi phục của nhà cung cấp. Cả hai mô hình đều hoạt động, hỏng theo cách khác nhau, và lỗi bạn có thể vượt qua là lỗi đáng để thiết kế xung quanh.

Nơi hai mô hình sao lưu tách nhau

Mô hình A là sao chép thư mục. CA kiểu OpenSSL là một thư mục làm việc, không phải một chứng chỉ duy nhất: ca.key hoặc cakey.pem, ca.crt, cơ sở dữ liệu cấp phát, bộ đếm serial và crlnumber, và openssl.cnf. Niêm phong thư mục đó bằng mật mã đối xứng, chuyển kết quả sang phương tiện thứ hai, và khôi phục nghĩa là giải nén, xác minh, ký. Mọi thứ nhà phát hành cần đều đi cùng nhau, kể cả nhiều tuần lịch sử thu hồi mà không ai nhớ đã viết.

Mô hình B là giam giữ khóa. Khóa được tạo bên trong một mô-đun PKCS#11 và đánh dấu là không thể xuất; mô-đun có thể bọc nó để sao lưu, nhưng không tiến trình nào đọc các byte thô. Bản sao lưu của bạn sau đó là hai thành phẩm phải được khôi phục đúng thứ tự: một khối khóa được bọc mà chỉ họ mô-đun đó mới mở được, cộng với một bản sao thường của cơ sở dữ liệu, cấu hình và chứng chỉ.

AttributeEncrypted archiveHSM key backup
What you storeone encrypted filewrapped blob plus CA records
Who can restore itanyone holding the passphraseholder of the module and the blob, often vendor support
If a copy leaksattacker with the passphrase becomes the CAblob is inert without the matching module
What usually breaks itforgotten passphrase, one damaged copyreplacement module rejects the blob, contract gap

Việc so sánh không bao giờ là mô hình nào mạnh hơn về mặt trừu tượng. Mà là mô hình nào nhóm của bạn có thể khôi phục lúc 2 giờ sáng cùng những người thực sự còn thức. Một kho lưu trữ không ai giải mã được và một khối HSM không ai kiểm tra đều vô dụng như nhau. Khác biệt là lỗi của kho lưu trữ hiện ra trong trình quản lý mật khẩu, còn lỗi của HSM ẩn trong hợp đồng hỗ trợ.

Mọi bản sao lưu CA phải chứa gì

Cả hai mô hình đều cần cùng một bộ bản ghi. Trong CA OpenSSL, những tệp đó là index.txt với một dòng cho mỗi chứng chỉ đã cấp bao gồm trạng thái, hết hạn, serial và chủ thể, sau đó index.txt.attr, serial giữ số sê-ri tiếp theo để cấp, crlnumber giữ số CRL tiếp theo, và openssl.cnf với dir, policy và default_days mà CA của bạn thực sự chạy. Hướng dẫn openssl-ca giải thích mỗi bộ đếm đó kiểm soát điều gì. easy-rsa giữ cùng dữ liệu dưới pki/, với một tệp vars quyết định các trường của chứng chỉ.

Khóa và chứng chỉ là những phần bạn không thể dựng lại. Cơ sở dữ liệu là phần bạn không thể tái tạo từ trí nhớ. Bỏ qua index.txt vẫn cho phép bạn ký chứng chỉ mới, và đó chính là cái bẫy: bạn phát hiện nó thiếu lần đầu tiên khi khách hàng hỏi một chứng chỉ có bị thu hồi hay không. Ghi lại dấu vân tay của CA bên ngoài bản sao lưu, để một lần khôi phục được so sánh với giá trị bạn tin cậy chứ không phải tệp bạn vừa khôi phục.

openssl x509 -in ca.crt -noout -fingerprint -sha256
tar czf ca-state.tar.gz ca.crt ca.key index.txt* serial* crlnumber* openssl.cnf
openssl enc -aes-256-cbc -pbkdf2 -iter 200000 -salt -in ca-state.tar.gz -out ca-state.tar.gz.enc
openssl ca -config openssl.cnf -gencrl -out crl.pem

Kiểm tra khôi phục không phân nhánh nhà phát hành

Hai CA đang sống với cùng chủ thể và cùng khóa trông giống hệt nhau với mọi khách hàng tin tưởng bản gốc. Hai CRL cùng số nhưng nội dung khác nhau là cách khách hàng lặng lẽ chấp nhận một chứng chỉ bạn đã thu hồi. Chạy khôi phục trên một máy chủ không có tuyến đến khách hàng của bạn, hoặc trong một VM dùng một lần, và không bao giờ công bố CRL mà bài kiểm tra tạo ra.

Một bài kiểm tra chỉ chứng minh kho lưu trữ mở được không chứng minh gì về việc cấp phát. Trình tự quan trọng: so sánh dấu vân tay của ca.crt đã khôi phục với giá trị bạn đã ghi, xác nhận serial khớp với điều chứng chỉ cấp gần nhất của bạn ngụ ý, cấp một chứng chỉ cho một CN dùng một lần và xem index.txt tăng thêm một dòng, sau đó thu hồi chứng chỉ đó và tạo lại CRL.

openssl verify -CAfile ca.crt -CRLfile crl.pem -crl_check client.crt
openssl crl -in crl.pem -noout -lastupdate -nextupdate

Với HSM, cùng bài kiểm tra đi qua mô-đun. Mở khối vào thiết bị thay thế, xác nhận chứng chỉ CA mà mô-đun báo cáo khớp với dấu vân tay bạn đã ghi, và chỉ sau đó mới để nó ký. Nếu mô-đun có kho đối tượng riêng, việc bọc phải bao gồm đối tượng khóa và nhãn của nó, vì khôi phục khóa dưới nhãn khác sẽ phá vỡ cấu hình trỏ đến nó.

Các chế độ hỏng quyết định lựa chọn

Năm lỗi giải thích phần lớn tổn thất thực tế. Một cụm mật khẩu kho lưu trữ bị quên mà không có bản sao bí mật độc lập biến kho lưu trữ thành cục gạch. Một bản sao duy nhất trên một đĩa chết cùng đĩa đó, và tổng kiểm tra không bao giờ cho bạn biết việc giải mã còn hoạt động hay không. Chứng chỉ bị thu hồi sau ngày sao lưu lại trông hợp lệ sau khi khôi phục, nên khoảng sao lưu của bạn cũng là điểm mù thu hồi của bạn. Khôi phục bộ đếm serial cũ hơn sẽ dùng lại số sê-ri và làm rối loạn bộ nhớ đệm và tra cứu CRL khóa theo serial. Một HSM thay thế từ chối khối được bọc biến việc thay phần cứng thành cấp phát lại toàn bộ.

Mô hình A xử lý kém bốn điều đầu nhưng có thể thấy được. Mô hình B xử lý tốt chúng cho đến khi mô-đun hoặc quy trình của nhà cung cấp hỏng. Nếu khóa của bạn có thể xuất và nhóm nhỏ, kho lưu trữ được mã hóa là lựa chọn trung thực, được hai phương tiện và một quy trình cụm mật khẩu bằng văn bản hỗ trợ. Nếu khóa không thể xuất, bạn không có lựa chọn nào cả, và công việc chuyển sang chứng minh đường khôi phục của nhà cung cấp trước ngày bạn cần đến nó.

Chọn mô hình và lên lịch

Ba điều kiện giải quyết quyết định. Khóa có thể xuất mà không cần quy trình nhà cung cấp không? Việc khôi phục có phải hạ cánh trên phần cứng bạn chưa sở hữu không? Việc cấp phát có thể dừng bao lâu trong khi bạn tranh luận với bộ phận hỗ trợ? Trả lời ba câu đó và mô hình được quyết định; mọi thứ sau đó là lên lịch.

Hãy sao lưu sau mỗi nghi lễ ký và trước mọi thay đổi cấu hình, vì cấu hình là một phần của trạng thái. Giữ hai bản sao trên các phương tiện khác nhau ở các vị trí khác nhau, một bản ngoại tuyến, và giữ bí mật giải mã trong một miền tin cậy khác với các bản sao. Ghi ngày khôi phục thành công gần nhất lên bản ghi sao lưu. Một bản sao lưu chưa bao giờ được khôi phục là một giả thuyết, không phải biện pháp kiểm soát.

Trước khi đóng phiếu, hãy xác nhận năm điểm sau:

  • Dấu vân tay của ca.crt được ghi ở đâu đó bên ngoài bản sao lưu.
  • index.txt, serial, crlnumber và openssl.cnf đều nằm trong kho lưu trữ hoặc bộ khối.
  • Việc giữ cụm mật khẩu hoặc khóa được bọc có tài liệu và do người khác chủ sở hữu kho lưu trữ nắm giữ.
  • Một lần khôi phục đã được kiểm tra trên máy chủ cô lập với một lần cấp phát và một lần thu hồi.
  • Khoảng trống thu hồi mà khoảng sao lưu của bạn ngụ ý đã được chấp nhận bằng văn bản hoặc rút ngắn.

Bài viết liên quan