# OpenSSL双向证书

By [MarkTang's Blog](https://paragraph.com/@marktang-s-blog) · 2022-08-26

---

时间戳鉴权加密方式
---------

加密密钥: 123456 (存在本地加密)

加密方式: AES

模式: CBC

填充补全码: Pkcs7

密文编码: Base64

iv偏移量: 123456 (跟密钥相同)

token请求头字段名: Access-Token

#### 加密流程

1.  获取服务器当前时间时间戳
    
2.  时间戳转成字节数组
    
3.  分组密钥
    
4.  获取密钥块长度，利用需要加密的内容的字节数组+密钥块长度 Pkcs7方式生成补全码
    
5.  利用 分组密钥+iv偏移量 创建CBC加密模式
    
6.  创建补全码长度的 字节数组用于待会儿保存加密后字节数组
    
7.  利用补全码进行CBC加密，加密字节保存到上方创建的字节数组中
    
8.  对字节数组密文进行base64编码，将该字符串存入请求头(Headers)的Access-Token中
    

**例:**

1.  生成根证书私钥 root-key.key
    
2.  生成根证书请求文件 根据root-key.key -> root-req.csr
    
3.  自签根证书 根据root-req.csr、root-key.key -> root-cert.cer (设置过期时间365)
    
4.  生成p12格式根证书 根据root-cert.cer、root-key.key -> root.p12
    
5.  生成服务端证书私钥 server-key.key
    
6.  生成服务端证书请求文件 根据server-key.key -> server-req.csr (绑定服务端域名)
    
7.  生成服务端证书 (root证书(root-cert.cer)、rootKey(root-key.key)、服务端Key(server-key.key)、服务端请求文件(server-req.csr)，用这4个文件生成服务端证书) -> server-cert.cer
    
8.  生成客户端证书私钥 client-key.key
    
9.  生成客户端证书请求文件 根据client-key.key -> client-req.csr
    
10.  生成客户端证书 (root证书(root-cert.cer)、rootKey(root-key.key)、客户端Key(client-key.key)、客户端请求文件(client-req.csr), 用这4个文件生成客户端证书) -> client-cert.cer
    
11.  生成客户端p12格式根证书 根据client-cert.cer、client-key.key -> client.p12

---

*Originally published on [MarkTang's Blog](https://paragraph.com/@marktang-s-blog/openssl)*
