PKCS#1 vs. PKCS#8
他们指得是证书的格式。定义书写的文本格式。
PKCS#1的PEM文件如下:
-----BEGIN RSA PUBLIC KEY-----
BASE64 ENCODED DATA
-----END RSA PUBLIC KEY-----
-----BEGIN RSA PRIVATE KEY-----
BASE64 ENCODED DATA
-----END RSA PRIVATE KEY-----
PKCS#8的PEM文件如下:
-----BEGIN PUBLIC KEY-----
BASE64 ENCODED DATA
-----END PUBLIC KEY-----
----BEGIN PRIVATE KEY-----
BASE64 ENCODED DATA
-----END PRIVATE KEY-----
RSA vs. EC
他们指的是证书的类型,即加密算法。
当前PKCS#1只支持RSA类型证书。
而PKCS#8支持多种证书类型,包括RSA和EC等。
所以前面我们看到PKCS#1的格式里面第一行就指定了证书类型(BEGIN RSA PUBLIC KEY),因为它不支持其他类型,而PKCS#8的格式里面没有指定证书类型,只有(BEGIN PUBLIC KEY),它的证书类型由证书内容自包含。
那么如何区分PKCS#8的证书类型呢:
$ openssl x509 -text -noout -in ec-cert.pem | grep "Signature Algorithm"
Signature Algorithm: ecdsa-with-SHA256
Signature Algorithm: ecdsa-with-SHA256
$ openssl x509 -text -noout -in rsa-cert.pem | grep "Signature Algorithm"
Signature Algorithm: sha256WithRSAEncryption
Signature Algorithm: sha256WithRSAEncryption
这里就可以看到一个PEM证书使用的证书类型,即加密算法。
网友评论