Jakie są różnice między .pem, .cer i .der?

86

Jakie są różnice między .pem, .ceri .der?

O ile wiem, .cerzawiera klucz publiczny. Czy istnieją otwarte platformy, których mogę użyć do zaszyfrowania moich danych za pomocą tego klucza publicznego?

LiangWang
źródło
2
Myślę, że to tylko formaty plików, które mogą przechowywać dowolny klucz; są narzędzia, które można swobodnie przełączać między nimi.
IMSoP
1
@IMSoP Masz rację, ale cpkomenda .cer do .der może zrobić :)
Maarten Bodewes
Usunąłem część specyficzną dla systemu iOS, wydaje się, że jest wiele przykładów, takich jak ta i ta wykorzystująca .pem.
Maarten Bodewes

Odpowiedzi:

93

.pem, .ceri.der wszystkie są rozszerzeniami plików, które mogą zawierać certyfikat X.509 v3.

.derrozszerzenie

DER to metoda kodowania danych składających się na certyfikat. Sam DER może reprezentować dowolny rodzaj danych, ale zwykle opisuje zakodowany certyfikat lub kontener CMS.

Struktura certyfikatu opisana jest za pomocą języka reprezentacji danych ASN.1. BER i DER to binarne metody kodowania danych opisane przez ASN.1.

.pemrozszerzenie

PEM to metoda kodowania danych binarnych jako ciąg znaków (zbroja ASCII). Zawiera nagłówek i linię stopki (określające typ danych, które są kodowane i pokazujące początek / koniec, jeśli dane są połączone razem), a dane w środku to dane bazowe 64. W przypadku, gdy szyfruje certyfikat, zawierałby po prostu podstawowe kodowanie 64 certyfikatu DER. PEM to skrót od Privacy Enhanced Mail; mail nie może bezpośrednio zawierać niezakodowanych wartości binarnych, takich jak DER.

PEM może również kodować / chronić inne rodzaje danych, które są związane z certyfikatami, takie jak klucze publiczne / prywatne, żądania certyfikatów itp. Jeśli zawartość jest wspólnym certyfikatem X509v3, wówczas PEM jest kodowany jako:

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

Należy pamiętać, że plik PEM może również zawierać pełny łańcuch certyfikatów, w którym łańcuch zaczyna się od certyfikatu liścia / końca usługi, po którym następuje certyfikat, który go podpisał, zwykle do zaufanego certyfikatu głównego, ale bez niego. Jeśli więc brakuje Ci certyfikatów, możesz zajrzeć do pierwszego z nich.

.cerLub .crtrozszerzenie

.cerpo prostu oznacza certyfikat. Zwykle są to dane zakodowane w formacie DER, ale system Windows może również akceptować dane zakodowane w formacie PEM. Musisz spojrzeć na zawartość (np. Używając filenarzędzia w systemach POSIX), aby zobaczyć, co jest w pliku, aby mieć 100% pewności.

Inne formaty OpenSSL

Spójrz na tę odpowiedź, aby uzyskać bardziej obszerną listę elementów obsługiwanych przez OpenSSL.


Aby użyć klucza publicznego zawartego w certyfikacie (i podpisanego podpisem w certyfikacie) należy użyć dowolnej biblioteki, która analizuje certyfikaty X.509 i wykonuje szyfrowanie RSA. Możesz użyć narzędzia, które wykrywa / obsługuje kodowanie PEM lub możesz najpierw przekonwertować certyfikat na DER, usuwając kodowanie PEM.

Linia poleceń OpenSSL zawiera wiele opcji do konwersji między PEM i DER, drukowania informacji o certyfikacie wysokiego poziomu lub parsowania ASN.1, aby uzyskać niskopoziomowy widok tego, co tam jest.

Detale

Podobnie jak większość struktur ASN.1, certyfikat z kodowaniem DER zawsze zaczyna się bajtem, 30który jest kodowaniem znacznika ASN.1 SEQUENCE. Jeśli widzisz dużo powtórzeń w pliku, to jest OK; to tylko struktura jest ściśle określona.

Podobnie, podstawa 64 w pliku zakodowanym w formacie PEM zawsze zaczyna się od litery, Mponieważ ASN.1 SEQUENCEzaczyna się od bajtu 30, więc pierwsze 6 bitów jest 001100, co przekłada się na liczbę 12, która jest indeksem litery M, trzynasta litera alfabetu.

Maarten Bodewes
źródło