分类
devops

PKCS#1和PKCS#8

PKCS

在密码学中,PKCS代表“公钥加密标准”。
PKCS是Public Key Cryptography Standards的缩写,意为公钥密码学标准。PKCS是由RSA安全公司(现在是EMC公司的一部分)制定的一系列密码学标准,用于支持和促进公钥密码学的应用和实施。这些标准涵盖了公钥加密、数字签名、证书请求和证书管理等方面的技术规范。PKCS标准被广泛应用于安全领域,特别是在SSL/TLS协议、数字证书和加密算法的实现中。
PKCS #1 可以称作pkcs 1号,以此类推,PKCS#1到#12并不是一代代的升级的,而是代表了不同功能,所以不能错误地理解为pkcs8是pkcs1的升级版。

—–BEGIN PRIVATE KEY—– 开头的文件和 —–BEGIN RSA PRIVATE KEY—–开头的文件有什么不同

这两种开头的文件都是私钥文件,但是它们所使用的加密算法不同。
—–BEGIN PRIVATE KEY—– 开头的文件通常包含的是 PKCS#8 格式的私钥,而 PKCS#8 是一种通用的私钥格式,可以支持不同种类的加密算法,如 RSA、DSA、ECDSA 等。因此,这种格式的私钥文件可能不仅限于 RSA 加密算法。

—–BEGIN RSA PRIVATE KEY—– 开头的文件则只包含 RSA 加密算法所使用的私钥信息,并采用了 PKCS#1 格式。这种格式的私钥文件仅适用于 RSA 加密算法。

PKCS#1 to PKCS#8

pkcs#1

-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----

pkcs#8

-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
# gen PKCS#1

openssl genrsa -out logstash.key 4096

# -----BEGIN RSA PRIVATE KEY-----

# convert PKCS#1 to PKCS#8
# -----BEGIN PRIVATE KEY-----
openssl pkcs8 -topk8 -inform pem -in logstash.key -outform pem -nocrypt -out logstash-pkcs8.key


# 或者
openssl pkcs8 -topk8 -inform pem -in logstash.key -outform pem -out logstash-pkcs8-enc.key

PKCS#8 to PKCS#1

openssl rsa -in logstash-pkcs8.key --out logstash-pkcs1.key

对比发现 logstash-pkcs1.key 和最初的 logstash.key 是一样的

ref