证书和编码
X.509证书的核心是根据RFC 5280进行编码或数字签名的数字文档。
实际上,术语X.509证书通常是指RFC 5280中规定的IETF的X.509 v3证书标准的PKIX证书和CRL配置文件,通常被称为公钥基础结构(X.509)。
X509文件扩展
我们首先要了解的是每种文件扩展名是什么。关于DER,PEM,CRT和CER是什么,存在很多困惑,并且许多人错误地表示它们都是可互换的。
尽管在某些情况下可以互换某些最佳做法,但最好的做法是确定证书的编码方式,然后正确地对其进行标记,正确标记的证书将更容易操作。
编码(也用作扩展名)
- .DER = DER扩展名用于二进制DER编码的证书,这些文件也可能带有CER或CRT扩展名,正确的英语用法是“我有DER编码证书”而不是“我有DER证书”。
- .PEM = PEM扩展名用于不同类型的X.509v3文件,这些文件包含以 “--BEGIN…” 行为前缀的ASCII(Base64)包装数据。
通用扩展
- .CRT = CRT扩展名用于证书。证书可以编码为二进制DER或ASCII PEM,CER和CRT扩展几乎是同义词, * nix系统中最常见的。
- .CER = .crt的替代形式(Microsoft约定)您可以使用MS将 .crt 转换为 .cer(.DER编码的.cer或base64 [PEM]编码的.cer). IE也将 .cer 文件扩展名识别为命令运行MS cryptoAPI命令(特别是rundll32.exe cryptext.dll,CryptExtOpenCER),该对话框显示用于导入或查看证书内容的对话框。
- .KEY = KEY扩展名同时用于公共和私有PKCS#8密钥,密钥可以编码为二进制DER或ASCII PEM。
CRT和CER唯一可以安全互换的时间是编码类型可以相同时。 (即PEM编码的CRT = PEM编码的CER)
常见的OpenSSL证书操作
证书操作有四种基本类型。查看,转换,组合和导出
1. 证书查看
即使PEM编码的证书是ASCII,也不是人类可读的证书。以下是一些命令,可让您以易于阅读的形式输出证书的内容。
查看PEM编码的证书 使用具有证书扩展名的命令,将cert.xxx替换为证书名称
- openssl x509 -in cert.pem -text -noout
- openssl x509 -in cert.cer -text -noout
- openssl x509 -in cert.crt -text -noout
如果收到以下错误,则表示您正在尝试查看DER编码的证书,并且需要使用以下``查看DER编码的证书''中的命令
unable to load certificate
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE
查看DER编码的证书
- openssl x509 -in certificate.der -inform der -text -noout
如果收到以下错误,则表示您正在尝试使用用于DER编码证书的命令查看PEM编码证书。使用“上面的查看PEM编码的证书”中的命令
unable to load certificate
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:380:Type=X509
2. 证书转换
PEM to DER
- openssl x509 -in cert.crt -outform der -out cert.der
DER to PEM
- openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
3. 证书组合
在某些情况下,将多个X.509基础结构组合到一个文件中是有利的。一个常见的示例是将私钥和公钥都组合到同一证书中。
组合证书密钥和链的最简单方法是将每个密钥转换为PEM编码的证书,然后将每个文件的内容简单地复制到新文件中。这适合于组合文件以在Apache的应用程序中使用
4. 证书导出
一些证书将以组合形式出现。其中一个文件可以包含以下任意一项:证书,私钥,公钥,签名证书,证书颁发机构(CA)或颁发机构链。
[转载]