思路

经常有需要使用安全传输的场景,尤其是在一些泛及资金安全的行业,对数据的传输犹为重视安全性。
一般常用的就是对前参的数据进行加密,再到后台进行解密。
接口和接口之前的数据也用一样的方式进行加密和解密。

  1. 生成公私钥证书
  2. 公钥对接口参数明文加密
  3. 私钥对接口参数明文解密
  4. 通信双方互相持有对方公私钥

如果所有的接口都需要加解密,可以放到拦截器中去统一处理,也可以用注解的方式,控制哪些接口需要加密,哪些接口不需要加密。

生成 RAS 密钥

windows 下使用 OpenSSL 工具生成即可,下载后需要解压,然后在 bin 下面打开 OpenSSL,解压是因为生运行后会生成公私钥文件在当前目录下。
mac也有一个自带OpenSSL,可以直接用来生成RSA公钥与私钥。

步骤

打开iterm2,输入openssl

打开openssl

1.生成私钥

genrsa -out rsa_private_key.pem 1024

生成私钥

2.生成公钥

rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

生成私钥

3.生成 PKCS8 格式私钥

pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt

转换pkcs8

这个需要保存另外保存起来,java 中需要使用 PKCS8 格式。

4.openssl生成RSA公、私钥对文件
rsa_private_key.pem
rsa_public_key.pem

文件

cat 看一下内容,其实就是上面生成的部份。

查看文件内容

使用证书

看到这里有经验的小伙伴肯定会有疑问,平时用的不都是.cer后缀的文件吗,这里是.pem格式的密钥文件,这个怎么用?
这是因为openssl可以将不同后缀的文件进行转换,以便应用在不同场景中。
也可以在生成的时候,直接指定生成.cer类型的密钥文件,一步到位。

pem 格式

内容为Base64编码的ASCII文件。

PEM格式是证书颁发机构颁发证书的最常见格式.PEM证书通常具有扩展名,例如.pem.crt.cer.key
它们是Base64编码的ASCII文件,
包含-----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----语句,就像上面生在的一样。
服务器证书,中间证书和私钥都可以放入PEM格式。

DER 格式

DER格式只是证书的二进制形式,而不是ASCII PEM格式。

它有时会有.der的文件扩展名,但它的文件扩展名通常是.cer所以判断DER .cer文件和PEM .cer文件之间区别的唯一方法是在文本编辑器中打开它并查找BEGIN / END语句。所有类型的证书和私钥都可以用DER格式编码。

DER通常与Java平台一起使用。
SSL转换器只能将证书转换为DER格式。
如果您需要将私钥转换为DER,请使用此页面上的OpenSSL命令。