前言
一直切换证书种类 管理证书的时候都是 百度 google 当场搜索 比较麻烦
这次有时间 记录一下 个人经常通过openssl 或者keytool去管理证书的命令
方便自己速查
openssl介绍:https://baike.baidu.com/item/openssl/5454803
keytool介绍:https://baike.baidu.com/item/keytool
常用密钥格式转换:https://blog.csdn.net/achenyuan/article/details/83340179
证书中常用名词解释:https://blog.csdn.net/zhangteng22/article/details/70139349
证书生成和查看:https://www.jianshu.com/p/5cff7accfd78
openssl
生成证书
1 | 生成rsa私钥 |
查看证书
1 | 查看rsa密钥 |
证书格式转换
.CRT = CRT扩展用于证书。 证书可以被编码为二进制DER或ASCII PEM。 CER和CRT扩展几乎是同义词。 最常见的于Unix 或类Unix系统
CER = .crt的替代形式(Microsoft Convention)您可以在微软系统环境下将.crt转换为.cer(.both DER编码的.cer,或base64 [PEM]编码的.cer)。
PEM(.pem) openssl默认生成的是pem文件
DER(.cer .der)
PKCS#12文件(.pfx .p12)
- pem <-> DER
1
2openssl x509 -outform der -in ca.crt -out ca.der
openssl x509 -inform der -in ca.der -out ca.pem - pem <-> PKCS12
1
2
3
4openssl pkcs12 -export -out ca.pfx -inkey ca.key -in ca.crt -certfile ca.crt
openssl pkcs12 -in ca.pfx -out capfx.pem -nodes
提取key
openssl pkcs12 -in ca.pfx -nodes -nocerts -out ca.key -passin pass:<passvalue> - pem -> key
1
openssl rsa -in ca.pem -out ca.key
keytool
keytool 是自签名证书 无法实现 openssl那样生成证书链 https://www.cnblogs.com/zhangshitong/p/9015482.html
生成证书
1 | 生成证书 jks格式 |
查看证书
1 | 查看证书详细信息 缺省情况下,-list 命令打印证书的 MD5 指纹。而如果指定了 -v 选项,将以可读格式打印证书,如果指定了 -rfc 选项,将以可打印的编码格式输出证书 |
证书格式转换
.CRT = CRT扩展用于证书。 证书可以被编码为二进制DER或ASCII PEM。 CER和CRT扩展几乎是同义词。 最常见的于Unix 或类Unix系统
.CER = .crt的替代形式(Microsoft Convention)您可以在微软系统环境下将.crt转换为.cer(.both DER编码的.cer,或base64 [PEM]编码的.cer)。
PEM(.pem) openssl默认生成的是pem文件
DER(.cer .der)
PKCS#12文件(.pfx .p12)
JKS(.jks) java专属证书格式
- jks <-> PKCS12
p12 = pfx 只是后缀不同
1
2keytool -importkeystore -srckeystore ca.jks -destkeystore ca.p12 -deststoretype PKCS12 -srcstorepass <passvalue> -deststorepass <passvalue>
keytool -importkeystore -srckeystore ca.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore ca.jks
常用命令
jks转换 pem+key
jks提取pem证书 可以把jks -> p12(pfx) -> pem 或者直接提取rfc模式1
2
3
4
5
6
7
8
9
10查看 有那些 节点
keytool --list -keystore <keystorefile.jks> -storepass <storepass>
提取指定节点
keytool -export -rfc -alias <alias-name> -file <output-file.pem> -keystore <keystorefile.jks> -storepass <storepass>
jks -> p12 -> pem
keytool -importkeystore -srckeystore ca.jks -destkeystore ca.p12 -deststoretype PKCS12 -srcstorepass <passvalue> -deststorepass <passvalue>
openssl pkcs12 -in ca.pfx -out capfx.pem -nodes
提取key
openssl pkcs12 -in ca.pfx -nodes -nocerts -out ca.key -passin pass:<passvalue>pem转换jks pem + key -> p12(pfx) -> jks
1
2openssl pkcs12 -export -out ca.pfx -inkey ca.key -in ca.crt -certfile ca.crt
keytool -importkeystore -srckeystore ca.pfx -srcstoretype PKCS12 -deststoretype JKS -destkeystore ca.jks
总结
证书 用的地方很多
例如 ssl/tls证书 访问第三方系统等等地方 只要需要加密签名的都可以用
不过一般来说 做ssl/tls证书居多 其他地方一般直接使用rsa密钥 一般不需要签发证书