在项目中刚好遇到需要使用到客户端的证书和密钥来进行访问的接口。然后我看到很多文章都写的不全,所以我才打算写这么一章。
本章节会大概介绍下证书以及证书的认证。
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,服务端和客户端都需要证书,他们互相把证书给对方,对方拿着证书去验证。确保双方都是期望的服务端和客户端。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。