在我的项目中刚好遇到须要应用到客户端的证书和密钥来进行拜访的接口。而后我看到很多文章都写的不全,所以我才打算写这么一章。
本章节会大略介绍下证书以及证书的认证。
1 证书密钥阐明
1.1 常见证书类型:
类型 | 格局 | 证书 or 密钥 |
---|---|---|
key | 密钥 | |
der,cer | 二进制 | 只放证书 |
crt | 二进制 或 文本(文本居多) | 只放证书 |
pem | 文本 | 证书 or 证书 + 密钥(如果只是密钥的话个别用.key) |
pfx,p12(都是 PKCS#12) | 二进制 | 证书 + 密钥,通常还有一个本人的爱护明码 |
PKCS 全称是 Public-Key Cryptography Standards,是由 RSA 实验室与其它平安零碎开发商为促成公钥明码的倒退而制订的一系列规范
1.2 证书之间的转换:
个别是通过 openssl
进行转换,咱们以 .key + .crt 转换成 .p12 为例,阐明下 openssl
的用法。
- 如过你没有
openssl
,能够到 https://www.openssl.org/source/ 下载。 - 关上命令行工具
- cd 到存 .key 和 .crt 文件到门路下
-
输出命令行
openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt
- <server.p12> 生成的 p12 文件的名字,你能够本人定义
- <server.key> 输出你须要转换的.key 文件
- <server.crt> 输出你须要转换的.crt 文件
- 输出明码,务必记住这个明码,它是作为你的 p12 文件的明码
更具体的信息能够看:https://docs.vmware.com/en/VM…
2 为什么有些接口须要客户端证书
双向认证 SSL 协定要求服务器和用户单方都有证书。单向认证 SSL 协定不须要客户领有 CA 证书
单向认证的 SSL:
单向认证的 SSL 只须要认证服务端的证书是否可信,服务端把本人的公共证书给客户端,客户端拿着服务端的证书去验证,确保收到的数据确实是来自于冀望的服务端的。
双向认证的 SSL
双向认证的 SSL,服务端和客户端都须要证书,他们相互把证书给对方,对方拿着证书去验证。确保单方都是冀望的服务端和客户端。