X.509 和 pem 的区别
Difference between X.509 and pem
在密码学中,X.509 和 pem 有什么区别?
X.509 格式可以包含私钥吗?私钥可以是pem格式吗?
X.509是一系列标准,而PEM只是文件中的X.509对象表示(编码)。从字面上看,任何数据都可以用 PEM 格式表示。任何可以转换为字节数组的东西(任何东西都可以,因为 RAM 是一个非常大的字节数组)都可以用 PEM 格式表示。
所有 X.509 对象都是可传输的,并使用抽象语法表示法一 (ASN.1) 作为字节数组表示。字节数组在通过网络传输时非常有用,但在存储在某处时并不总是有用。另一件事是,如果不进行彻底的内容分析,您将无法轻易确定 X.509 对象类型。
PEM 代表 Privacy Enhanced Mail 并在 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
由于十六进制无法用于表示二进制数据,因为它需要 space 两倍于原始数据,因此使用了更高效的 Base64 编码。并使用特殊的页眉和页脚来表示嵌入对象类型:
X.509 证书
-----BEGIN CERTIFICATE-----
MIIEITCCA+CgAwIBAgIUKMmxmDbjbHqt+Yzwj5lflBxuQwEwCQYHKoZIzjgEAzAjMSEwHwYDVQQD
ExhUb2tlbiBTaWduaW5nIFB1YmxpYyBLZXkwHhcNMTIxMTE2MTgzODMwWhcNMTIxMTIzMTgzODMw
WjAtMSswKQYDVQQDHiIAYgBiADEANAAxADkAYQAyAGMAZgBjADEAZQAwADAAOAAAMIGfMA0GCSqG
<...>
-----END CERTIFICATE-----
X.509 证书吊销列表
-----BEGIN X509 CRL-----
MIIDBjCCAm8CAQAwcTERMA8GA1UEAxMIcXV1eC5jb20xDzANBgNVBAsTBkJyYWlu
czEWMBQGA1UEChMNRGV2ZWxvcE1lbnRvcjERMA8GA1UEBxMIVG9ycmFuY2UxEzAR
BgNVBAgTCkNhbGlmb3JuaWExCzAJBgNVBAYTAlVTMIGfMA0GCSqGSIb3DQEBAQUA
<...>
-----END X509 CRL-----
X.509 证书请求
-----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-----
等等。
在密码学中,X.509 和 pem 有什么区别?
X.509 格式可以包含私钥吗?私钥可以是pem格式吗?
X.509是一系列标准,而PEM只是文件中的X.509对象表示(编码)。从字面上看,任何数据都可以用 PEM 格式表示。任何可以转换为字节数组的东西(任何东西都可以,因为 RAM 是一个非常大的字节数组)都可以用 PEM 格式表示。
所有 X.509 对象都是可传输的,并使用抽象语法表示法一 (ASN.1) 作为字节数组表示。字节数组在通过网络传输时非常有用,但在存储在某处时并不总是有用。另一件事是,如果不进行彻底的内容分析,您将无法轻易确定 X.509 对象类型。
PEM 代表 Privacy Enhanced Mail 并在 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
由于十六进制无法用于表示二进制数据,因为它需要 space 两倍于原始数据,因此使用了更高效的 Base64 编码。并使用特殊的页眉和页脚来表示嵌入对象类型:
X.509 证书
-----BEGIN CERTIFICATE-----
MIIEITCCA+CgAwIBAgIUKMmxmDbjbHqt+Yzwj5lflBxuQwEwCQYHKoZIzjgEAzAjMSEwHwYDVQQD
ExhUb2tlbiBTaWduaW5nIFB1YmxpYyBLZXkwHhcNMTIxMTE2MTgzODMwWhcNMTIxMTIzMTgzODMw
WjAtMSswKQYDVQQDHiIAYgBiADEANAAxADkAYQAyAGMAZgBjADEAZQAwADAAOAAAMIGfMA0GCSqG
<...>
-----END CERTIFICATE-----
X.509 证书吊销列表
-----BEGIN X509 CRL-----
MIIDBjCCAm8CAQAwcTERMA8GA1UEAxMIcXV1eC5jb20xDzANBgNVBAsTBkJyYWlu
czEWMBQGA1UEChMNRGV2ZWxvcE1lbnRvcjERMA8GA1UEBxMIVG9ycmFuY2UxEzAR
BgNVBAgTCkNhbGlmb3JuaWExCzAJBgNVBAYTAlVTMIGfMA0GCSqGSIb3DQEBAQUA
<...>
-----END X509 CRL-----
X.509 证书请求
-----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-----
等等。