Ai đó đã thu hồi một chứng chỉ trong bảng điều khiển CA và giờ người dùng không thể kết nối. Phản xạ đầu tiên là tìm cách hoàn tác, và với hầu hết PKI thì không có: thu hồi là một sự thật được tuyên bố về số sê-ri, và đường quay lại được hỗ trợ là một chứng chỉ mới, không phải bản ghi bị đảo ngược. Hãy lần lượt thực hiện các kiểm tra dưới đây, vì việc sửa nào được phép phụ thuộc vào mã lý do và việc khóa có từng bị lộ hay không.

Xác định chứng chỉ, không phải con người

Tên chung lặp lại. Một người dùng đăng ký lại vào quý trước có thể có hai chứng chỉ cùng CN và số sê-ri khác nhau, và thu hồi một cái vẫn để cái kia hoạt động. Trước tiên hãy xác lập đối tượng chính xác:

openssl x509 -in client.crt -noout -serial -issuer -subject -dates
openssl crl -in ca.crl -noout -text | head -40

Ghi lại số sê-ri, nhà phát hành, ngày thu hồi và lý do được ghi trong CRL. Sau đó xác nhận thiết bị nào trình bày số sê-ri đó, vì chứng chỉ bị thu hồi có thể vẫn được cài trên máy tính xách tay, điện thoại và bộ định tuyến dự phòng, và một bản thay thế chỉ đến được một trong số đó sẽ tạo ra sự cố thứ hai.

Một kiểm tra hành vi nhanh xác nhận trạng thái mà không thay đổi gì:

openssl verify -crl_check -CAfile ca.crt -CRLfile ca.crl client.crt

Nếu nó báo chứng chỉ đã bị thu hồi, CRL và máy khách đồng ý; nếu nó xác minh sạch, máy khách bạn đang giữ không phải cái bị thu hồi, và việc tìm kiếm tiếp tục.

Kiểm tra xem CA đã dùng tạm giữ hay thu hồi vĩnh viễn

RFC 5280 định nghĩa certificateHold là trạng thái tạm thời và removeFromCRL là tín hiệu giải phóng nó. Vòng đời đó là thật, nhưng nó không phải nút hoàn tác chung. Đọc mã lý do cho bạn biết nhà phát hành có từng định hỗ trợ việc giải phóng hay không.

Cái bẫy là giả định rằng ý định tạm thời nghĩa là bản ghi tạm thời. Nếu mục trong CA mang keyCompromise hoặc cessationOfOperation, chứng chỉ bị thu hồi vĩnh viễn, bất kể người bấm nút định làm gì. Ngược lại, một mục được đánh dấu certificateHold trên CA không triển khai giải phóng tạm giữ là vĩnh viễn trên thực tế, vì sẽ không có gì công bố việc giải phóng.

Các CA dựa trên OpenSSL minh họa giới hạn. Lệnh ca chấp nhận các giá trị -crl_reason, bao gồm certificateHold và removeFromCRL, nhưng nó không tạo CRL delta — tài liệu OpenSSL CA nêu giới hạn đó cho đầu ra CRL của nó. Một CRL đầy đủ chỉ đơn giản bỏ qua số sê-ri là một mô hình công bố khác với delta nói "mục này đã được giải phóng", nên việc dán removeFromCRL vào CA VPN dựa trên OpenSSL không tạo ra việc giải phóng theo định nghĩa của chuẩn.

Nếu khóa có thể đã bị lộ, hãy thay nó

Chứng chỉ bị thu hồi là tuyên bố rằng khóa này có thể không còn đáng tin. Nếu việc thu hồi đúng về bản chất — mất máy tính xách tay, khóa bị sao chép sang đĩa chia sẻ, khóa riêng bị dán vào phiếu — thì khôi phục cùng chứng chỉ đó sẽ đảo ngược một quyết định bảo mật đang hoạt động đúng như thiết kế.

Phát hành cặp khóa mới qua quy trình đăng ký, phân phối hồ sơ mới và để số sê-ri cũ bị thu hồi trong suốt vòng đời của nó. Cập nhật mọi thứ ghim danh tính theo số sê-ri hoặc dấu vân tay, bao gồm danh sách tiếp nhận, kiểm kê thiết bị và giám sát chờ một chứng chỉ cụ thể.

Lập luận thuận tiện cho việc khôi phục cái cũ là có thật, nhưng phải được trả lời rõ ràng chứ không phải im lặng. "Người dùng cần truy cập hôm nay" là lý do để tăng tốc phát hành, không phải lý do để hoàn tác việc thu hồi một khóa mà bạn không thể giải trình.

Nếu là lỗi hành chính, hãy thay thế có kiểm soát

Khi việc thu hồi chỉ đơn giản là sai và khóa chưa từng bị lộ, cách sửa vẫn là thay thế có kiểm soát chứ không phải chỉnh sửa. Dùng quy trình được hỗ trợ của nhà phát hành, giữ nguyên số sê-ri và lịch sử phát hành, và tránh hai lối tắt hấp dẫn: đảo ký tự trạng thái trong index.txt từ R trở lại V, và xóa hàng phát hành để chứng chỉ mới có thể dùng lại số sê-ri.

Trên CA OpenSSL, cơ sở dữ liệu được phân tách bằng tab và dễ đọc sai, khiến việc chỉnh sửa thủ công trở nên hấp dẫn:

awk -F'\t' '$1=="R" {print $4, $3, $6}' index.txt

Hãy đọc nó, đừng ghi vào nó. Chỉnh sửa tệp sẽ thay đổi CRL tiếp theo mà không có bất kỳ dấu vết kiểm toán nào, và bất kỳ phiên bản CA thứ hai hoặc bản sao lưu nào còn giữ hàng gốc sẽ mâu thuẫn với nó sau này.

Sau khi phát hành bản thay thế, hãy công bố CRL mới qua cơ chế thông thường và để máy khách lấy nó. Xóa một CRL, rút ngắn vòng đời của nó xuống không, hoặc tắt kiểm tra thu hồi trong hồ sơ máy khách sẽ sửa một người dùng bằng cách làm suy yếu mọi lần thu hồi khác mà CA từng công bố.

Xác nhận một lần tiếp nhận mới và giữ hồ sơ

Kiểm tra bằng kết nối mới, không phải phiên đã mở. Một đường hầm đang sống có thể không chạy lại các kiểm tra tiếp nhận mà một lần bắt tay mới thực hiện, và bộ nhớ đệm CRL khiến máy khách có thể tiếp tục kết nối cho đến khi làm mới. Ngắt kết nối, kết nối lại và xác nhận trong nhật ký máy chủ số sê-ri nào đã được chấp nhận.

Ghi lại những gì đã xảy ra khi còn mới: số sê-ri nào bị thu hồi, bởi ai, với lý do gì, bản thay thế nào đã phát hành và CRL được công bố lại khi nào. Hồ sơ đó là thứ cho phép lần xem xét thu hồi tiếp theo, và cũng là bằng chứng rằng sai sót đã được xử lý thay vì bị che giấu.

Đối với các đợt tạm dừng ngắn trong tương lai, hãy dùng cơ chế tạm dừng tiếp nhận nếu triển khai có — một tài khoản bị vô hiệu hóa ở lớp danh tính, một tư cách thành viên nhóm bị gỡ, một hồ sơ máy khách bị giữ lại. Điều đó tách quyết định chính sách tạm thời khỏi câu hỏi liệu chứng chỉ đã phát hành còn đáng tin hay không, và chính sự khác biệt đó đã bị mất lần đầu tiên.

Bài viết liên quan