2016-08-16 9 views

ответ

4

X.509 - это серия стандартов, в то время как PEM - это просто представление объекта X.509 в файле (кодирование). Буквально любые данные могут быть представлены в формате PEM. Все, что может быть преобразовано в массив байтов (и все может быть, потому что RAM - очень большой массив байтов), может быть представлено в формате PEM.

Все объекты X.509 являются передаваемыми и представлены с использованием абстрактного синтаксического нотации One (ASN.1) в виде байтового массива. Байт-массивы великолепны при передаче по сетям, но не всегда полезны при хранении. Другое дело, что вы не можете легко определить тип объекта X.509 без анализа контентного контента.

PEM означает конфиденциальности Enhanced почты и определяется в RFC1421. Хотя PEM был разработан для разных целей, стандарт определяет представление PEM, особенно когда необходимо представлять непечатаемые символы только с печатными символами. В криптографии PEM ассоциируется только с представлением объекта X.509. Кроме того, PEM предоставляет дополнительные данные для идентификации встроенного объекта.

ASN.1 форма объекта X.509 является массив байт, например (серия октетов для представления байт):

3a 20 63 65 72 74 6c 69 62 5c 6c 64 61 70 2e 63 
70 70 28 32 31 33 31 29 3a 20 6c 64 61 70 65 72 

Поскольку гекс не является полезным для представления двоичных данных, поскольку он требует в два раза больше места, чем исходные данные, используется более эффективная кодировка Base64. А специальные верхние и нижние колонтитулы используются для обозначения внедренного типа объекта:

X.509 Certificate

-----BEGIN CERTIFICATE----- 
MIIEITCCA+CgAwIBAgIUKMmxmDbjbHqt+Yzwj5lflBxuQwEwCQYHKoZIzjgEAzAjMSEwHwYDVQQD 
ExhUb2tlbiBTaWduaW5nIFB1YmxpYyBLZXkwHhcNMTIxMTE2MTgzODMwWhcNMTIxMTIzMTgzODMw 
WjAtMSswKQYDVQQDHiIAYgBiADEANAAxADkAYQAyAGMAZgBjADEAZQAwADAAOAAAMIGfMA0GCSqG 
<...> 
-----END CERTIFICATE----- 

X.509 список отзыва сертификатов

-----BEGIN X509 CRL----- 
MIIDBjCCAm8CAQAwcTERMA8GA1UEAxMIcXV1eC5jb20xDzANBgNVBAsTBkJyYWlu 
czEWMBQGA1UEChMNRGV2ZWxvcE1lbnRvcjERMA8GA1UEBxMIVG9ycmFuY2UxEzAR 
BgNVBAgTCkNhbGlmb3JuaWExCzAJBgNVBAYTAlVTMIGfMA0GCSqGSIb3DQEBAQUA 
<...> 
-----END X509 CRL----- 

X.509 Certificate Запрос

-----BEGIN NEW CERTIFICATE REQUEST----- 
MIIDBjCCAm8CAQAwcTERMA8GA1UEAxMIcXV1eC5jb20xDzANBgNVBAsTBkJyYWlu 
czEWMBQGA1UEChMNRGV2ZWxvcE1lbnRvcjERMA8GA1UEBxMIVG9ycmFuY2UxEzAR 
BgNVBAgTCkNhbGlmb3JuaWExCzAJBgNVBAYTAlVTMIGfMA0GCSqGSIb3DQEBAQUA 
<...> 
-----END NEW CERTIFICATE REQUEST----- 

PKCS # 1 закрытый ключ

-----BEGIN RSA PRIVATE KEY----- 
MIIDBjCCAm8CAQAwcTERMA8GA1UEAxMIcXV1eC5jb20xDzANBgNVBAsTBkJyYWlu 
czEWMBQGA1UEChMNRGV2ZWxvcE1lbnRvcjERMA8GA1UEBxMIVG9ycmFuY2UxEzAR 
BgNVBAgTCkNhbGlmb3JuaWExCzAJBgNVBAYTAlVTMIGfMA0GCSqGSIb3DQEBAQUA 
<...> 
-----END RSA PRIVATE KEY----- 

PKCS # 8 закрытый ключ

-----BEGIN PRIVATE KEY----- 
MIIDBjCCAm8CAQAwcTERMA8GA1UEAxMIcXV1eC5jb20xDzANBgNVBAsTBkJyYWlu 
czEWMBQGA1UEChMNRGV2ZWxvcE1lbnRvcjERMA8GA1UEBxMIVG9ycmFuY2UxEzAR 
BgNVBAgTCkNhbGlmb3JuaWExCzAJBgNVBAYTAlVTMIGfMA0GCSqGSIb3DQEBAQUA 
<...> 
-----END PRIVATE KEY----- 

и так далее.