Openssl 常用企业级命令
1. x509 部分(.pem/.crt/.der)
# 打印出证书的内容:
openssl x509 -in cert.pem -noout -text
# 打印出证书的系列号
openssl x509 -in cert.pem -noout -serial
# 打印出证书的拥有者名字
openssl x509 -in cert.pem -noout -subject
# 以RFC2253规定的格式打印出证书的拥有者名字
openssl x509 -in cert.pem -noout -subject -nameopt RFC2253
# 在支持UTF8的终端一行过打印出证书的拥有者名字
openssl x509 -in cert.pem -noout -subject -nameopt oneline -nameopt -escmsb
# 打印出证书的MD5特征参数
openssl x509 -in cert.pem -noout -fingerprint
# 打印出证书的SHA特征参数
openssl x509 -sha1 -in cert.pem -noout -fingerprint
# 把PEM格式的证书转化成DER格式
openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER
# 把一个证书转化成CSR
openssl x509 -x509toreq -in cert.pem -out req.pem -signkey key.pem
# 给一个CSR进行处理,颁发字签名证书,增加CA扩展项
openssl x509 -req -in careq.pem -extfile openssl.cnf -extensions v3_ca -signkey key.pem -out cacert.pem
# 给一个CSR签名,增加用户证书扩展项
openssl x509 -req -in req.pem -extfile openssl.cnf -extensions v3_usr -CA cacert.pem -CAkey key.pem -CAcreateserial
# 查看csr文件细节
openssl req -in my.csr -noout -text
2. PKCS#12 部分(.pfx/.p12)
# pem 转 pfx/p12 (主要在windows)格式
openssl pkcs12 -export -out cert.pfx -inkey cert-key.pem -in cert.pem -certfile ca.pem
# 从pfx中获取CA证书
openssl pkcs12 -in client.pfx -password pass:11111111 -nokeys -cacerts -out ca.pem
# 从pfx中获取客户端证书
openssl pkcs12 -in client.pfx -password pass:11111111 -clcerts -nokeys -out clientcert.pem
# 从pfx中获取客户端私钥
openssl pkcs12 -in client.pfx -password pass:11111111 -nocerts -nodes -out clientkey.pem
# pem(apache/nginx等通用) 转 p12 格式
openssl pkcs12 -export -in ca.pem -inkey ca-key.pem -out ca.p12
# pem 转 cer 格式
openssl x509 -outform der -in cert.pem -out cert.cer
3. 关于.pem
、.der
、.cer
、.crt
、.pfx
、.p12
文件格式/后缀(扩展名)的区别:
-
.pem
:用ASCLL(BASE64)编码的证书,通常用于数字证书认证机构(Certificate Authorities,CA),扩展名为.pem, .crt, .cer, and .key。内容为Base64编码的ASCII码文件,有类似-----BEGIN CERTIFICATE-----
和-----END CERTIFICATE-----
的头尾标记。服务器认证证书,中级认证证书和私钥都可以储存为PEM格式(认证证书其实就是公钥)。Apache和类似的服务器使用PEM格式证书。 -
.der
:用二进制DER编码的证书,与PEM不同之处在于其使用二进制而不是Base64编码的ASCII。扩展名为.der,但也经常使用.cer用作扩展名,所有类型的认证证书和私钥都可以存储为DER格式。Java使其典型使用平台。 -
.cer/.crt
:存放公钥,没有私钥,都是证书文件(编码方式不一定,有可能是.pem,也有可能是.der); -
.pfx
:或者叫.p12
,二者内容格式一致,只是文件后缀的区别,主要存放公钥和私钥,主要用于windows平台,浏览器可以使用,也是包含证书和私钥,获取私钥需要密码验证。 -
x509文件扩展名(x509 这种证书只有公钥,不包含私钥。)
-
编码(也用作扩展):
-
DER扩展用于二进制DER编码证书。这些文件也可能带有CER或CRT扩展名。正确的英语用法是“我有DER编码证书”而不是“我有DER证书”。
-
PEM扩展名用于不同类型的X.509v3文件,这些文件包含前缀为“-BEGIN ...”行的ASCII(Base64)装甲数据。
-
组合:在某些情况下,将多个X.509基础结构组合成单个文件是有利的。一个常见的例子是将私钥和公钥组合到同一个证书中。组合证书密钥和链的最简单方法是将每个密钥转换为PEM编码证书,然后将每个文件的内容简单复制到新文件中。这适用于组合文件以在Apache应用程序中使用。
-
萃取:有些证书将以合并形式出现。其中一个文件可以包含以下任何一个:证书,私钥,公钥,签名证书,证书颁发机构(CA)和/或授权链。
-