思路
经常有需要使用安全传输的场景,尤其是在一些泛及资金安全的行业,对数据的传输犹为重视安全性。 一般常用的就是对前参的数据进行加密,再到后台进行解密。 接口和接口之前的数据也用一样的方式进行加密和解密。
- 生成公私钥证书
- 公钥对接口参数明文加密
- 私钥对接口参数明文解密
- 通信双方互相持有对方公私钥
如果所有的接口都需要加解密,可以放到拦截器中去统一处理,也可以用注解的方式,控制哪些接口需要加密,哪些接口不需要加密。
生成 RAS 密钥
windows 下使用 OpenSSL 工具生成即可,下载后需要解压,然后在 bin 下面打开 OpenSSL,解压是因为生运行后会生成公私钥文件在当前目录下。 mac也有一个自带OpenSSL,可以直接用来生成RSA公钥与私钥。
步骤
打开iterm2,输入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
这个需要保存另外保存起来,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命令。