PKCS 公钥加密标准(Public Key Cryptography Standards, PKCS),此一标准的设计与发布皆由RSA资讯安全公司(英语:RSA Security)所制定,PKCS 目前共发布过 15 个标准。更多公钥加密标准
X.509 是密码学里公钥证书的格式标准。
X.509是常见通用的证书格式。是ITU-T标准化部门基于他们之前的ASN.1定义的一套证书标准。
X.509附带了证书吊销列表和用于从最终对证书进行签名的证书签发机构直到最终可信点为止的证书合法性验证算法。
X.509证书已应用在包括TLS/SSL在内的众多网络协议里,同时它也用在很多非在线应用场景里。
Tips: 区别证书的不是后缀名,而是证书文件的格式与内容。
Tips:
- 密钥指的是私钥或者公钥 —> 密钥 = 私钥/公钥;
- 密钥对指的是公钥加上私钥 —> 密钥对 = 私钥+公钥;
- 非对称加密:
- 公钥和私钥是成对的,公钥和私钥唯一对应,它们互相解密。
- 公钥一般用来加密和验证签名,私钥用来签名和解密。
- 加密(加解密): 公钥加密,私钥解密;加密的目的是保证信息的保密传输,使只有具备资格的一方才能解密。
- 认证(加验签): 私钥数字签名,公钥验证签名;加签的目的是让收到消息的一方确认该消息是由特定方发送的。
- 在实际的应用中,通常将两者结合在一起使用,例如,对称密钥加密系统用于存储大量数据信息,而公开密钥加密系统则用于加密密钥。
Apache和其他类似服务器使用PEM格式证书。几个PEM证书,甚至私钥,可以包含在一个文件中,一个在另一个文件之下,但是大多数平台(例如Apache)希望证书和私钥位于单独的文件中。
JKS和PKCS12之间的最大区别是JKS是Java专用的格式,而PKCS12是存储加密的私钥和证书的标准化且与语言无关的方式。
格式转换
OpenSSL是一个非常有用的开源命令行工具包,可用于 X.509 证书,证书签名请求(CSRs)和加密密钥。
- 查看 PEM证书
openssl x509 -text -noout -in CERTIFICATE.pem
- 查看 DER证书
openssl x509 -inder der -text -noout -in CERTIFICATE.der
- 查看 CSR证书
openssl req -text -noout -in mysite.csr
- 查看 P7B证书
openssl pkcs7 -inform der -in CERTIFICATE.p7b -print_certs -text
-
查看 JKS证书
keytool -list -rfc -keystore server.jks -storepass XXXXXX
-
PEM to DER
openssl x509 -outform der -in CERTIFICATE.pem -out CERTIFICATE.der
- PEM to P7B
openssl crl2pkcs7 -nocrl -certfile CERTIFICATE.cer -certfile CACert.cer -out CERTIFICATE.p7b
- PEM to PFX
openssl pkcs12 -export -out CERTIFICATE.pfx -inkey PRIVATEKEY.key -in CERTIFICATE.cer [-certfile CACert.cer]
openssl pkcs12 -export -out server.p12 -inkey server.key -in server.pem
-
DER to PEM
openssl x509 -inform der -in CERTIFICATE.cer -out CERTIFICATE.pem
-
P7B to PEM
openssl pkcs7 -print_certs -in CERTIFICATE.p7b -out CERTIFICATE.cer
-
P7B to PFX
openssl pkcs7 -print_certs -in CERTIFICATE.p7b -out CERTIFICATE.cer
-
PFX to PEM
openssl pkcs12 -in CERTIFICATE.pfx -out CERTIFICATE.cer -nodes konwersja poprze OpenSSL
openssl pkcs12 -nocerts -nodes -in cert.p12 -out private.pem
openssl pkcs12 -clcerts -nokeys -in cert.p12 -out cert.pem
(PFX to PEM后CERTIFICATE.cer文件包含认证证书和私钥,需要把它们分开存储才能使用。)
- JKS to P12
keytool -importkeystore -srcstoretype JKS -deststoretype PKCS12 -srckeystore server.jks -destkeystore server.p12
- P12 to JKS
keytool -importkeystore -srcstoretype PKCS12 -deststoretype JKS -srckeystore server.p12 -destkeystore server.jks
-inform PEM|DER 输入格式 - DER或PEM(x509默认为PEM)
-in infile 输入文件(x509默认为stdin)
-outform PEM|DER 输出格式 - DER或PEM(x509默认为PEM)
-out outfile 输出文件(x509默认为stdout)
-keyform PEM|DER|ENGINE 私钥格式 - 默认PEM
-passin val 私钥密码/口令来源
-modulus 打印RSA密钥模数
-pubkey 输出公钥
-fingerprint 打印证书的指纹
-alias 输出证书别名
-noout 没有输出,只有状态
-nocert 无证书输出
-trustout 输出一个受信任的证书
-setalias val 设置证书别名
-days int 签署的证书到期前的时间 - 默认 30 天
-signkey val 用参数自行签署证书
-x509toreq 输出一个认证请求对象
-req 输入是一个证书请求,签署并输出
-CA infile 设置CA证书,必须是PEM格式
-CAkey val 设置 CA 密钥,必须是 PEM 格式;如果不在 CAfile 中
-text 打印文本形式的证书
-ext val 打印各种X509V3扩展文件
-extfile infile 要添加X509V3扩展的文件
-writerand outfile 将随机数据写到指定文件中
-extensions val 要使用的配置文件中的部分
-nameopt val 各种证书名称选项
-certopt val 各种证书文本选项
-checkhost val 检查证书是否与主机匹配
-checkemail val 检查证书是否与电子邮件匹配
-checkip val 检查证书是否与ipaddr匹配
-CAform PEM|DER CA格式--默认PEM
-CAkeyform PEM|DER|ENGINE CA密钥格式--默认为PEM
-export 输出PKCS12文件
-nodes 不要加密私钥
-nokeys 不输出私钥
-keysig 设置 MS 密钥签名类型
-nocerts 不输出证书
-clcerts 只输出客户证书
-cacerts 只输出CA证书
-info 打印有关PKCS#12结构的信息
-chain 添加证书链
-certpbe val 证书PBE算法(默认为RC2-40)
-inkey val 如果不是infile,则为私钥
-certfile infile 从文件中加载证书
-CApath dir PEM格式的CA的目录
-CAfile infile PEM格式的CA的文件
-no-CAfile 不加载默认的证书文件
-no-CApath 不从默认的证书目录中加载证书
Via
Original: https://www.cnblogs.com/librarookie/p/16330406.html
Author: Librarookie
Title: CA证书介绍与格式转换
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578028/
转载文章受原作者版权保护。转载请注明原作者出处!