证书介绍
证书
证书包含
- 申请者的基本信息:网站使用的加密算法、网站使用的hash算法;
- 申请者的公钥;
- 认证机构的信息:认证机构的名称,证书到期时间。
- 认证机构的证书签名。
总之:证书的核心功能就是安全的传递公钥!
证书编码
标识证书编码类型,表明证书是以什么编码存在
Der (Distinguished Encoding Rules)
- 二进制编码的证书或公私钥
- 正确的理解是:”我有二进制编码的证书”,而不是”我有一个DER证书”
- der格式的证书文件内容是经过加密的二进制数据,也就是说文件内容打开后是乱码
Pem (Privacy Enhanced Mail)
pem格式的证书内容是经过加密的文本文件,一般是base64编码格式的Der证书,增加头尾了
可直接用记事本打开查看
PEM私钥增加:
1 | -----BEGIN RSA PRIVATE KEY----- |
PEM公钥增加:
1 | -----BEGIN PUBLIC KEY----- |
PEM证书增加:
1 | -----BEGIN CERTIFICATE----- |
pem格式和der格式的证书文件可以相互转换
证书相关后缀
.key(pem格式的私钥,也有人认为这是公钥)
通常标识这个是证书文件,公钥和私钥可以被编码为二进制DER
或ASCII PEM
。
.pub(pem格式的公钥)
通常是公钥文件
.pem
见证书编码-Pem, 我有一个以”-BEGIN…”为前缀的ASCII(Base64)数据格式的证书。
.der(der格式的证书)
见证书编码-Der, 我有一个”DER编码的证书”,而不是”我有一个DER证书”。
.csr(通过该文件去向CA机构签发证书)
证书请求,网站生成请求供CA签发证书使用
.req(申请证书时发送给CA认证机构的请求文件)
含义和.csr
等同
.crt(per格式的证书)
常用于linux系统,表示我是一个”可以被pem或der编码的证书”,crt
和cer
含义基本相同
.cer
常用于windows系统,表示我是一个”可以被pem或der编码的证书”, crt
和cer
含义基本相同,windows下可以将crt导出成cer
.p12(Pkcs#12)
- Pkcs#1 RSA格式的公私或私钥
- Pkcs#8 相比pkcs#1而言不仅仅是RSA格式的更通用的公私或私钥
- Pkcs#12 记录对称的公钥和私钥
.jks(Java Key Store,证书钱包)
.keystore(jks的常用名)
证书工具
Jdk keytool
Jdk提供的证书工具,常用于java或tomcat程序
OpenSSL
通用证书工具,见OpenSSL
常用命令
查看证书文件内容(只针对证书文件,不包含公私钥)
- der:
openssl x509 -in es190.crt -inform der -text –noout
- pem:
openssl x509 -in es190.crt -text –noout
生成p12证书
openssl pkcs12 -export -in 公钥.pem -inkey 私钥.pem -out admin.p12
(只能是pem编码,不能是der的)
转换证书格式(只针对证书文件,不包含公私钥)
- pem->der:
openssl x509 -in cert.crt -outform der-out cert.der
- der->pem:
openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
- jks->p12:
keytool -importkeystore -srckeystore eastcom -srcstoretype jks -destkeystore eastcom.p12 -deststoretype pkcs12
- p12->jks:
keytool -importkeystore -srckeystore eastcom.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore es.jks
- p12->crt:
openssl pkcs12 -in client.p12 -clcerts -nokeys -out client.crt
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LXY's blog!