Hướng dẫn bắt đầu ở danh sách chứng chỉ của máy khách, nơi mục nhập chỉ hiển thị một tên, một nhà phát hành và một ngày hết hạn và không gì khác. Xuất nó, nhập nó trên thiết bị thứ hai, và kết nối bị từ chối vì máy khách không thể chứng minh việc sở hữu khóa riêng. Tệp đã được sao chép đầy đủ; sai lầm là kỳ vọng chứng chỉ mang theo khóa của chính nó. Đọc hộp thoại xuất trước khi chọn định dạng, rồi kiểm tra tệp bạn thực sự nhận được.

Hai cú nhấp, hai sản phẩm hoàn toàn khác nhau.

Đọc hộp thoại xuất, không phải phần mở rộng tệp

Một lần xuất chứng chỉ DER hoặc PEM chứa khóa công khai và các tuyên bố danh tính đã ký, đó là thứ máy chủ cần để tin bạn và thứ máy khách cần để xác minh máy chủ. Gói PKCS#12 là một vật chứa có thể giữ chứng chỉ, chuỗi của nó và khóa riêng tương ứng, được bảo vệ bằng mật khẩu, dù nó cũng có thể được tạo mà không có khóa.

PEM chỉ là một cách mã hóa văn bản, không phải lời hứa về nội dung. Cùng một phần mở rộng có thể mô tả một chứng chỉ duy nhất hoặc một tệp có nhiều khối được gắn nhãn, và các tùy chọn xuất quyết định điều đó.

Vì vậy câu hỏi hữu ích không bao giờ là bạn nhận được phần mở rộng nào, mà là tệp chứa những khối nào. Một gói được xuất mà không có khóa vẫn là một gói. Hãy kiểm tra nội dung chứ không phải mức phổ biến của định dạng.

Kiểm tra những gì bạn thực sự nhận được

Tìm các nhãn trước khi nhập bất cứ thứ gì, rồi đọc các trường của chứng chỉ để xác nhận bạn đang giữ danh tính nào. Chạy các kiểm tra trên tệp sẽ thực sự được nhập. Lặp lại sau mỗi lần xuất lại, vì các tùy chọn có thể khác nhau.

grep -E 'BEGIN (CERTIFICATE|PRIVATE KEY|ENCRYPTED PRIVATE KEY)' bundle.pem
openssl x509 -in client.crt -noout -subject -issuer -dates
openssl pkey -in client.key -noout -text | head -5
openssl pkcs12 -info -in client.p12 -noout

Một lần xuất chỉ có khối chứng chỉ là một đối tượng công khai và không thể xác thực. Một khối khóa không có chứng chỉ để bạn không có chuỗi mà máy chủ mong đợi. Đầu ra thông tin của PKCS#12 cũng báo cáo liệu có khóa hay không, điều này giải quyết câu hỏi cho định dạng đó. Nó cũng nêu thuật toán và kích thước khóa, và nó thất bại hoàn toàn khi không có khóa.

Đừng bao giờ dán tệp chứa khóa riêng vào một chủ đề hỗ trợ, trình theo dõi vấn đề hay cuộc trò chuyện, ngay cả khi nó trông giống chứng chỉ bạn đã chia sẻ. Ảnh chụp màn hình của bảng khóa cũng cần sự thận trọng như vậy.

Khóa có thể nằm ở nơi bạn không thể sao chép

Trên thiết bị được quản lý, khóa riêng có thể nằm trong chùm khóa của hệ điều hành, trong token phần cứng hoặc trong vùng bao an toàn, với chính sách đánh dấu nó là không thể xuất. Trình quản lý chứng chỉ khi đó hiển thị đối tượng công khai trong khi bí mật vẫn ở nguyên chỗ, và không lệnh xuất nào tạo ra bản sao di động. Việc đăng ký qua quản lý thiết bị di động thường hoạt động đúng như vậy theo thiết kế.

Đó là một biện pháp kiểm soát, không phải chướng ngại cần lách. Không thể dựng lại khóa riêng từ chứng chỉ công khai, và bất kỳ công cụ nào tuyên bố làm được điều đó đang làm việc khác.

Đăng ký danh tính mới thay vì sao chép

Con đường được hỗ trợ thường là đăng ký một danh tính riêng cho thiết bị mới và thu hồi danh tính cũ khi nó ngừng sử dụng, để mỗi thiết bị có thể bị thu hồi độc lập. Ở nơi việc xuất kèm khóa thực sự được chấp thuận, hãy coi tệp tạo ra và mật khẩu của nó như thông tin đăng nhập: được mã hóa khi lưu trữ, được truyền qua kênh tin cậy và bị xóa khi việc đăng ký hoàn tất.

Xác minh bằng cách xác thực với danh tính đã nhập, không phải bằng cách xem việc nhập có thành công. Một máy khách chấp nhận chứng chỉ công khai vào kho của mình không chứng minh được gì về khóa.

Kết thúc bằng việc xác nhận máy chủ chấp nhận danh tính mới và danh tính cũ vẫn hành xử như chính sách mong muốn. Như vậy hướng dẫn khép lại bằng bằng chứng, chứ không phải bằng một tệp trông có vẻ đúng.

Bài viết liên quan