Xuất chứng chỉ từ P12 mà không cần khóa riêng
Một gói PKCS12 chứa cả khóa và chứng chỉ cùng nhau. Hãy đọc cấu trúc trước, rồi chọn chứng chỉ bằng -nokeys thay vì gỡ bỏ lớp bảo vệ.
Phiếu hỗ trợ hỏi chứng chỉ nào nằm trong gói VPN, và phản xạ đầu tiên là xuất toàn bộ rồi đính kèm. Tệp P12 đóng gói chứng chỉ và vật liệu khóa riêng trong một vùng chứa, nên xuất toàn bộ chính là thứ bạn không nên gửi. Lệnh trả lời câu hỏi là một bài toán lựa chọn, không phải bài toán chuyển đổi. Bốn cờ quyết định bạn nhận nửa nào của vùng chứa, và hai trong số đó nghe an toàn hơn thực tế.
Hãy bắt đầu bằng việc đọc vùng chứa thay vì làm rỗng nó.
Tệp PKCS12 thực sự chứa gì
Một vùng chứa PKCS12 chứa một hoặc nhiều chứng chỉ, có thể có khóa riêng và một message authentication code trên nội dung. Các chứng chỉ có thể gồm chứng chỉ lá cho danh tính khách hàng của bạn và các chứng chỉ trung gian nối nó với CA. Khóa, khi có mặt, là thứ khiến tệp trở thành bí mật chứ không phải tài liệu.
Sự khác biệt đó là lý do -nokeys tồn tại và là lý do nó là cờ mà nhiệm vụ này cần.
Đọc gói mà không ghi khóa ra
Dạng kiểm tra in cấu trúc và chi tiết thuật toán và không ghi gì cả: openssl pkcs12 -in client.p12 -info -noout. Nó hỏi mật khẩu nhập, đây là nơi đúng cho giá trị đó, và cho bạn biết tệp có chứa khóa hay không. Dùng -passin env:PKCS12_PASS khi không thể gõ mật khẩu, vì mật khẩu trong một lệnh shell là mật khẩu trong danh sách tiến trình. Bước này không xuất gì cả, và đó chính là điểm mấu chốt.
Đọc đầu ra để biết ba điều: có bao nhiêu chứng chỉ, có khóa hay không và thuật toán nào bảo vệ nó.
Dùng -nokeys, và đừng nhầm với -nocerts
-nokeys loại trừ khóa riêng và để lại chứng chỉ. -clcerts thu hẹp điều đó thành chứng chỉ khách hàng, -cacerts thu hẹp thành chứng chỉ CA, và hai cờ này là bộ lọc chứ không phải lựa chọn thay thế. -nocerts đọc như cách viết an toàn của cùng ý tưởng và có nghĩa ngược lại: không có chứng chỉ, tức là chỉ còn khóa. Trộn nó vào một lần xuất chứng chỉ là cách khóa riêng rơi xuống đĩa.
Dạng hai dòng tạo ra tệp chứng chỉ và tệp CA, và không gì khác, là:
openssl pkcs12 -in client.p12 -nokeys -clcerts -out client-certificates.pem
openssl pkcs12 -in client.p12 -nokeys -cacerts -out ca-certificates.pemCác gói cũ cần -legacy trên OpenSSL 3 để đọc mã hóa cũ hơn của chúng, và cờ đó thay đổi thứ mà bộ phân tích chấp nhận, không phải thứ nó phát ra. Nếu phân tích thất bại với lỗi về thuật toán không được hỗ trợ, thêm -legacy là bước đầu tiên đúng và bỏ qua kiểm tra MAC thì không.
Kiểm tra đầu ra, không phải mã thoát
Trạng thái thoát bằng không nói rằng lệnh đã chạy, không nói rằng tệp chứa thứ bạn mong đợi. Đếm số chứng chỉ trong đầu ra và đọc subject cùng ngày tháng: openssl x509 -in client-certificates.pem -noout -subject -dates -fingerprint. So sánh dấu vân tay với cái mà nhóm hỗ trợ mong đợi, vì một gói có hai chứng chỉ khách hàng tạo ra tệp có hai khối và hầu hết công cụ chỉ đọc khối đầu tiên. Mục đích, tin cậy và khớp khóa lại là những bài kiểm tra riêng.
Một chứng chỉ phân tích được là một chứng chỉ phân tích được. Nó không phải là chứng chỉ mà VPN chấp nhận.
Quyết định xem bạn có cần tệp hay không
Nếu ứng dụng khách nhận nhập PKCS12 trực tiếp, gửi gói gốc qua một kênh được phê duyệt với mật khẩu để riêng thì đơn giản hơn và giữ được lớp bảo vệ. Việc trích xuất dành cho kiểm tra, cho ứng dụng khách cần PEM, hoặc cho một ca hỗ trợ đã yêu cầu một tạo tác cụ thể. Mỗi lần trích xuất gỡ bỏ một lớp và cần có lý do.
Chứng chỉ công khai không chứa khóa riêng, nhưng chúng chứa tên và thông tin tổ chức. Hãy chia sẻ các trường mà phiếu yêu cầu thay vì tệp, trừ khi tệp chính là thứ được yêu cầu.