Kubernetes,  Operation

Openssl 常用企业级命令

使用 cloudflare cfssl 自签证书

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)和/或授权链。

留言

您的电子邮箱地址不会被公开。