常见证书说明
大约 3 分钟
X.509证书标准定义
PEM、DER
--- 文件拓展名: --- CRT和CER是一种东西,只是后缀名不一样:也同样有两种格式: Base64和字节码 PEM: 纯文本文件, 以-----BEGIN 某某某-----开头, 以-----END 某某某-----结尾, 内容是 base64 编码 DER: 二进制文件格式, 一般应使用 Windows/Java 开发工具打开, 也可以使用openssl命令行工具提取其中信息或进行编码转换 CRT: 常见于*NIX系统,有可能是PEM编码,也有可能是DER编码,大多数应该是PEM编码 CER: 常见于Windows系统,同样的,可能是PEM编码,也可能是DER编码,大多数应该是DER编码 KEY: 通常用来存放一个公钥或者私钥,并非X.509证书,编码同样的,可能是PEM,也可能是DER 查看KEY的办法:
openssl rsa -in mykey.key -text -noout
如果是DER格式的话,同理应该这样了:
openssl rsa -in mykey.key -text -noout -inform der
CSR: 这个并不是证书,而是向权威证书颁发机构获得签名证书的申请,其核心内容是一个公钥,在生成这个申请的时候,同时也会生成一个私钥,私钥要自己保管好 PFX/P12: ngnix服务器来说,一般CRT和KEY是分开存放在不同文件中的,但Windows的IIS则将它们存在一个PFX文件中 PFX转换为PEM编码:
openssl pkcs12 -in for-iis.pfx -out for-iis.pem -nodes
生成pfx的命令:
openssl pkcs12 -export -in certificate.crt -inkey privateKey.key -out certificate.pfx -certfile CACert.crt
JKS: 即Java Key Storage,这是Java的专利,跟OpenSSL关系不大,利用Java的一个叫"keytool"的工具,可以将PFX转为JKS.
注: keytool也能直接生成JKS.
证书编码的转换
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
生成CSR时翻译说明
Country Name (2 letter code) [AU]:CN 国家名称(2 个字母代码)[AU]:CN
State or Province Name (full name) [Some-State]:GuangDong 州或省名称(全名)[Some-State]:广东
Locality Name (eg, city) []:ZhongShan 地名(如城市)[]:ZhongShan
Organization Name (eg, company) [Internet Widgits Pty Ltd]:xxx 组织名称(例如,公司)[Internet Widgits Pty Ltd]:xxx
Organizational Unit Name (eg, section) []:xxx 组织单位名称(例如,部分)[]:xxx
Common Name (e.g. server FQDN or YOUR name) []:*.xxx.com 通用名称(例如服务器 FQDN 或您的姓名)[]:*.xxx.com
Email Address []:bingco.zn@gmail.com 邮箱地址 []:bingco.zn@gmail.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:xxx.com 证书库密码: xxx.com
An optional company name []: 可选的公司名称 []:
自颁发证书指令
- 生成KEY 算法是des3
openssl genrsa -des3 -out server.key 2048
- 生成证书签名工具CSR
openssl req -new -key server.key -out server.csr
生成CA证书
openssl x509 \ -req \ -days 365 \ -in server.csr \ -signkey \ -server.key \ -out server.crt
如果需要做双向认证,可重复以上步骤生成客户端证书
证书转换
格式转换: PEM转DER
// 这里转换参可以为der或pem
openssl x509 -in server.crt -out server-bin.crt -outform der
测试可用自签名步骤
创建 ca.cnf 文件
写入如下配置信息
distinguished_name = req_distinguished_name #特征名称信息
prompt = no #关闭指令输入特征名称信息
[req_distinguished_name]
C = CN
ST = GuangDong
L = ZhongShan
O = xxx
OU = xxx
CN = 192.168.0.168
[v3_req] # v3配置
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names] #域名与IP配置
DNS.1 = xxx.com
DNS.2 = *.xxx.com
DNS.3 = www.xxx.com
IP.1 = 127.0.0.1
IP.2 = 192.168.0.168
生成指令
openssl \
req -x509 \
-nodes \
-days 365 \
-newkey rsa:2048 \
-keyout priviate.key \
-out nginx.crt \
-config req.cnf \
-sha256 \
-extensions v3_req