1️⃣ Định dạng PEM là gì?
PEM (Thư nâng cao quyền riêng tư) là định dạng văn bản được sử dụng để lưu trữ và chuyển khóa và chứng chỉ. Nó mã hóa Base64 dữ liệu DER nhị phân và bao bọc nó bằng các đầu trang và chân trang như -----BEGIN và -----END . Các nhãn phổ biến bao gồm PUBLIC KEY , PRIVATE KEY và CERTIFICATE . Thật dễ dàng để sao chép, dán và truyền tải trong quy trình làm việc dựa trên văn bản, khiến nó trở thành một trong những định dạng trao đổi khóa phổ biến nhất.
2️⃣ Những định dạng nào khác phổ biến ngoài PEM?
- DER : một định dạng nhị phân thuần túy lưu trữ trực tiếp các cấu trúc ASN.1. Nó không thể đọc được bằng con người và phổ biến trong hệ sinh thái Java.
- HEX : biểu thị nội dung nhị phân DER dưới dạng chuỗi thập lục phân, hữu ích cho việc gỡ lỗi hoặc nhúng mã.
- Base64 (không có tiêu đề) : DER thô được mã hóa dưới dạng Base64 không có tiêu đề PEM, thường được sử dụng trong cấu hình nhỏ gọn hoặc tải trọng mã thông báo.
- PKCS#12 (PFX) : một định dạng vùng chứa nhị phân có thể gộp các khóa công khai và khóa riêng tư lại với nhau, thường được bảo vệ bằng mật khẩu và thường được trình duyệt hoặc hệ thống Windows sử dụng.
3️⃣ Khi nào bạn nên sử dụng từng định dạng?
- PEM : tùy chọn phổ biến nhất, phù hợp với OpenSSL, máy chủ web (Nginx/Apache) và trao đổi API.
- DER : thường được sử dụng trong môi trường Java hoặc nơi yêu cầu lưu trữ nhị phân nghiêm ngặt.
- HEX : hữu ích trong việc gỡ lỗi, hệ thống nhúng hoặc bất cứ khi nào cần kiểm tra byte chính xác.
- Base64 (không có tiêu đề) : hữu ích khi định dạng bị hạn chế hoặc cần có một biểu diễn nhỏ gọn.
- PKCS#12 : hữu ích khi cả khóa chung và khóa riêng phải được vận chuyển cùng nhau trong khi bảo vệ khóa riêng bằng mật khẩu.