高安全软件接口通信方案
来源:未知 时间:2021-53-22 浏览次数:253次
普通软件开发中使用HTTPS即HTTP+SSL进行单项认证通信就能够满足接口之间通信安全的需求,但是对于一些设计金融,支付,银行相关业务,软件系统设计涉密数据等的软件系统一般接口间通信必须双向验证,信息做好防串改工作HTTPS双向验证区别于单项验证(单项验证开发所有客户端即不对客户端做证书验证),不仅客户端要验证服务器端证书,服务器端也要验证客户端证书,是否进行双向验证取决于服务端。双向验证更能保障服务器端接口的访问安全性,谁获得过证书,谁才能访问,比之于单向验证更有安全性,如下图所示。
服务器端证书的生成与配置
- 首先确保服务器已经安装nginx与OpenSSL,其安装可参考相关文章
- 生成CA 私钥, ca.key
- 生成CA数字证书,即跟证书
- 生成 server 端私钥
- 生成 server 端数字证书请求
- 用 CA 私钥签发 server 的数字证书
- 生成 client 端的私钥
- 生成 client 端数字证书请求
- 用 CA 私钥签发 client 的数字证书
- Nginx配置如下图所示
客户端请求接口时需要加载证书并发起http请求,当服务器端验证成功后才能完成后续的通信工作,客户端实现根据不同的开发语言有不同的实现方式,下列已JAVA与PHP为例说明主要实现过程
- PHP语言完成客户端双向验证协议的接口请求
- JAVA语言完成客户端双向验证协议的接口请求
1.客户端第一次访问(基于双向验证,携带固定的账户密码等)服务器端程序时服务前端下发随机签名秘钥(该秘钥通过AES系列算法进行加密),完成通信接口的第一次通信握手
2.客户端利用签名秘钥SHA1加密算法对传送数据进行加密处理并以POST方式发送到服务前端
3.服务器根据签名秘钥使用对应解密算法进行数据解密及验证,主要是从解密数据中验证其下发的签名秘钥是否正确,若验证通过则进行业务数据通信传输。
4.其中签名秘钥也可以是双方约定的固定值无需完成第一次接口通信握手
- 上一篇: 企业级数据业务中台详解及使用技术
- 下一篇: 人工智能技术应用领域