PKI
公开密钥基础建设(Public Key Infrastructure),是一组由硬件、软件、参与者、管理政策与流程组成的基础架构,其目的在于创造、管理、分配、使用、存储以及撤销数字证书, 从而建立一个安全的网络环境,数字证书最常见的格式有X.509,X.509又称之为PKIX。 在计算机界,有各种密码学标准,它们表示了如何在计算机中计算、存储、传输(等)各种算法,这些标准由 RSA、IEFT、PKIX、ITU-T、ISO 等标准组织机构编写, CA中心普遍采用的规范是X.509系列和PKCS系列
CA
证书颁发机构
CSR
证书签名请求
CRL
证书吊销列表
OCSP
在线证书状态协议
PKCS
公钥私钥加密-密码学标准(Public Key Cryptography Standards, PKCS),此一标准的设计与发布皆由
RSA
资讯安全公司(英语:RSA Security)所制定 包括了证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。它定义了一系列从PKCS#1到PKCS#15的标准
pkcs1
PKCS #1,RSA Cryptography Standard,定义了RSA Public Key和Private Key数学属性和格式,详见RFC8017 定义了RSA的数理基础、公/私钥格式,以及加/解密、签/验章的流程。1.5版本曾经遭到攻击
openssl genrsa -out key.pem
Private Key Format
-----BEGIN RSA PRIVATE KEY-----
BASE64Encoded
-----END RSA PRIVATE KEY-----
Public Key Format
-----BEGIN RSA PUBLIC KEY-----
BASE64Encoded
-----END RSA PUBLIC KEY-----
pkcs7
参见RFC 2315。规范了以公开密钥基础设施(PKI)所产生之签名/密文之格式。其目的一样是为了拓展数字证书的应用。 其中,包含了S/MIME与CMS。 主要用来存储签名或者加密后的数据,如证书或者CRL。 PKCS7可以用二进制的DER格式存储,也可以使用PEM格式存储。Windows中PKCS7通常使用
.p7b
文件扩展名
Format
‑‑‑‑‑BEGIN PKCS7‑‑‑‑‑
‑‑‑‑‑END PKCS7‑‑‑‑‑
PKCS7的文件从PEM格式转换成为DER格式
openssl pkcs7 -in file.pem -outform DER -out file.der
文件中提取出所有的证书到另外一个文件
openssl pkcs7 -in file.pem -print_certs -out certs.pem
pkcs8
PKCS #8,Private-Key Information Syntax Standard,详细的描述了私钥的存储格式。用于加密、非加密地存储Private Certificate Keypairs(不限于RSA),详见RFC5858 Apache读取证书私钥的标准。主要用来存储私钥。私钥首先会使用PKCS #5的标准进行加密,然后
Base64
编码,转换成为PEM
格式存储
一个非加密 ECC 私钥的 PKCS#8
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQglQanBRiYVPX7F2Rd
4CqyjEN0K4qfHw4tM/yMIh21wamhRANCAARsxaI4jT1b8zbDlFziuLngPcExbYzz
ePAHUmgWL/ZCeqlODF/l/XvimkjaWC2huu1OSWB9EKuG+mKFY2Y5k+vF
-----END PRIVATE KEY-----
一个加密 PKCS#8 私钥的 PEM 格式
-----BEGIN ENCRYPTED PRIVATE KEY-----
Base64 xxxxxx
-----END ENCRYPTED PRIVATE KEY-----
RSA 私钥转换为 PKCS#8
openssl pkcs8 -topk8 -inform PEM -in rsa-private-key.pem -outform PEM -nocrypt -out rsa-private-key-pkcs8.pem
ECC 私钥转换为 PKCS#8
openssl pkcs8 -topk8 -inform PEM -in ecc-private-key.pem -outform PEM -nocrypt -out ecc-private-key-pkcs8.pem
pkcs12
定义了包含私钥(Private Keys)与公钥证书(public key certificate)的文件格式。私钥采密码(password)保护。PKCS12文件的扩展名是
.p12
、.pfx
、.jks
。 PKCS12可以看做是PKCS7的扩展,PKCS12可以额外存储私钥、证书、私钥、CRL Private Keys和Public Key Certificates是复数形式,这意味着PKCS #12文件实际上是一个Keystore,PKCS #12文件可以被用做Java Key Store(JKS),详见RFC7292
将PKCS12格式转换成为PEM
openssl pkcs12 -nocerts -nodes -in cert.p12 -out private.pem
从PEM到PKCS12
openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem
X509
X.509是ITU-T标准化部门基于他们之前的ASN.1定义的一套证书标准,在X.500基础上进行了功能增强 X.509是在1988年发布的。X.509证书由用户公共密钥和用户标识符组成。此外还包括版本号、证书序列号、CA标识符、签名算法标识、签发者名称、证书有效期等信息
Certificate Format
-----BEGIN CERTIFICATE-----
BASE64Encoded
-----END CERTIFICATE-----
Certificate Subject Public Key Info
-----BEGIN PUBLIC KEY-----
BASE64Encoded
-----END PUBLIC KEY-----
ASN.1
在电信和计算机网络领域,ASN.1(Abstract Syntax Notation One) 是一套标准,是描述数据的表示、编码、传输、解码的灵活的记法。 它提供了一套正式、无歧义和精确的规则以描述独立于特定计算机硬件的对象结构。 ASN.1是ISO和ITU-T的联合标准,最初是1984年的CCITT X.409:1984的一部分。由于其广泛应用,1988年ASN.1移到独立标准X.208,1995年进行全面修订后变成X.680系列标准
PEM
PEM文件是一个文本文件,其内容是以“ – BEGIN -” 开头,中间内容是DER文件的Base64编码
查看文本证书内容
openssl x509 -in cert.pem -text -noout
openssl x509 -in cert.cer -text -noout
openssl x509 -in cert.crt -text -noout
PEM-To-DER
openssl x509 -in cert.crt -outform der-out cert.der
openssl rsa -in key.pem -outform der -out key.der
DER
DER表示证书的内容是用二进制进行编码的
查看二进制证书内容
openssl x509 -in cert.der -inform der -text -noout
DER-To-PEM
openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
参考文档
最后修改于 2023-10-14
此篇文章的评论功能已经停用。