Sự khác biệt giữa .pem, .cer và .der là gì?


84

Sự khác nhau giữa là gì .pem, .cer.der gì?

Theo như tôi biết, .cercó chứa khóa công khai. Có bất kỳ khuôn khổ mở nào mà tôi có thể sử dụng để mã hóa dữ liệu của mình bằng khóa công khai này không?


2
Tôi nghĩ tất cả chúng chỉ là định dạng tệp có thể lưu trữ bất kỳ khóa nào; có những công cụ có thể chuyển đổi giữa chúng một cách tự do.
IMSoP

1
@IMSoP phải bạn đang có, nhưng đối với cer để .der các cplệnh có thể làm :)
Maarten Bodewes

Tôi đã xóa phần cụ thể của iOS, có vẻ như có rất nhiều ví dụ ngoài đó, chẳng hạn như cái nàycái kia bằng cách sử dụng .pem.
Maarten Bodewes

Câu trả lời:


88

.pem, .cer.der đều là những phần mở rộng tập tin cho các tập tin có thể chứa một chứng chỉ X.509 v3.

Phần .dermở rộng

DER là phương pháp mã hóa dữ liệu tạo nên chứng chỉ. Bản thân DER có thể đại diện cho bất kỳ loại dữ liệu nào, nhưng thông thường nó mô tả chứng chỉ được mã hóa hoặc vùng chứa CMS.

Cấu trúc của chứng chỉ được mô tả bằng ngôn ngữ biểu diễn dữ liệu ASN.1. BER và DER là các phương pháp mã hóa nhị phân cho dữ liệu được ASN.1 mô tả.

Phần .pemmở rộng

PEM là một phương pháp mã hóa dữ liệu nhị phân dưới dạng chuỗi (giáp ASCII). Nó chứa đầu trang và dòng chân trang (xác định loại dữ liệu được mã hóa và hiển thị bắt đầu / kết thúc nếu dữ liệu được xâu chuỗi với nhau) và dữ liệu ở giữa là dữ liệu cơ sở 64. Trong trường hợp nó mã hóa một chứng chỉ, nó sẽ chỉ chứa mã hóa cơ sở 64 của chứng chỉ DER. PEM là viết tắt của Privacy Enhanced Mail; thư không được chứa các giá trị nhị phân chưa được mã hóa như DER trực tiếp.

PEM cũng có thể mã hóa / bảo vệ các loại dữ liệu khác có liên quan đến chứng chỉ như khóa công khai / riêng tư, yêu cầu chứng chỉ, v.v. Nếu nội dung là chứng chỉ X509v3 thông thường thì PEM ​​được mã hóa thành:

-----BEGIN CERTIFICATE-----
... base 64 encoding of the DER encoded certificate
    with line endings and padding with equals signs ...
-----END CERTIFICATE-----

Lưu ý rằng tệp PEM cũng có thể chứa một chuỗi chứng chỉ hoàn chỉnh, trong đó chuỗi bắt đầu bằng chứng chỉ lá / cuối của dịch vụ, tiếp theo là chứng chỉ đã ký nó, thường lên đến nhưng không bao gồm chứng chỉ gốc đáng tin cậy. Vì vậy, nếu bạn thiếu chứng chỉ, bạn có thể muốn xem lại chứng chỉ đầu tiên.

Các .cerhoặc .crtmở rộng

.cerchỉ là viết tắt của chứng chỉ. Nó thường là dữ liệu được mã hóa DER, nhưng Windows cũng có thể chấp nhận dữ liệu được mã hóa PEM. Bạn cần xem qua nội dung (ví dụ như sử dụng filetiện ích trên hệ thống posix) để xem những gì bên trong tệp để chắc chắn 100%.

Các định dạng OpenSSL khác

Hãy xem câu trả lời này để biết danh sách mở rộng hơn về những gì được OpenSSL hỗ trợ.


Để sử dụng khóa công khai trong chứng chỉ (và được ký bằng chữ ký trong chứng chỉ), bạn nên sử dụng bất kỳ thư viện nào phân tích cú pháp chứng chỉ X.509 và thực hiện mã hóa RSA. Bạn có thể sử dụng một công cụ phát hiện / xử lý mã hóa PEM hoặc trước tiên bạn có thể chuyển đổi chứng chỉ sang DER bằng cách loại bỏ mã hóa PEM.

Dòng lệnh OpenSSL chứa nhiều tùy chọn để chuyển đổi giữa PEM và DER, in ra thông tin chứng chỉ cấp cao hoặc phân tích cú pháp ASN.1 để có được chế độ xem cấp thấp về những gì có trong đó.

Chi tiết

Giống như hầu hết các cấu trúc ASN.1, chứng chỉ được mã hóa DER luôn bắt đầu bằng một byte 30là mã hóa thẻ của ASN.1 SEQUENCE. Nếu bạn thấy nhiều lần lặp lại trong tệp thì điều này không sao cả; nó chỉ là cấu trúc được xác định chặt chẽ.

Tương tự như vậy, cơ sở 64 trong tệp được mã hóa PEM luôn bắt đầu bằng ký tự Mkhi ASN.1 SEQUENCEbắt đầu bằng byte 30, vì vậy 6 bit đầu tiên 001100, được dịch thành số 12, là chỉ số của ký tự M, chữ cái thứ mười ba của bảng chữ cái.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.