当前位置: 首页 > Linux

PHP接口安全机制

时间:2023-04-07 01:35:39 Linux

一、Http接口安全概述:1.1.Http接口是连接各种Internet系统的重要方式之一。使用http接口非常方便开发和调用,也是一种被广泛使用的方法。它可以让不同的系统实现数据的交换和共享,但是由于http接口是在互联网上开放的,所以我们需要有一定的安全措施来保证不能随便调用;1.2.目前,国内互联网公司主要采用两种方式实现接口安全:一是以支付宝等支付公司为代表的私钥公钥签名验证机制;一种是大量互联网公司普遍使用的参数签名验证机制;2.Http接口安全演进:2.1.完全开放的界面(completelyOpen)2.2.接口参数签名(基本安全)2.3.接口参数签名+时效验证(更安全)2.4.接口参数私钥签名公钥签名验证(固若金汤)2.5.接口参数签名+Https(金钟罩)2.6。端口参数私钥签名公钥签名验证+Https(金钟罩)总之:安全是相对的,只有相对的安全,没有绝对的安全!3.Http接口安全设计与应用3.1接口参数私钥签名公钥签名验证下面看一下私钥+公钥的安全模式,这是一种比较安全的方式,通过私钥和公钥实现接口目前,以支付宝为代表的公司在互联网上主要采用这种机制;(很多开放平台也采用这种机制)。具体业务流程如图:签名是通过4个秘钥实现的,分别是:客户端应用私钥、客户端公钥、服务端应用私钥、服务端公钥。私钥用于生成签名,公钥用于解密,客户端的公钥解密客户端的私钥生成的签名,服务器的公钥解密服务器的私钥生成的签名服务器。相信这样解释应该更容易理解。好吧,让我们详细看看它是如何工作的,我的具体操作步骤:首先,4个密钥都是由OpenSSL工具生成的,你需要先获取这个工具:官网:https://www.openssl.org/介绍一下这个工具,OpenSSL是一个开源的安全套接字层密码库,包括主要的密码算法,常用的密钥和证书封装管理函数和SSL协议,并提供丰富的应用测试或其他用途;整个OpenSSL软件包大致可以分为三个主要功能部分:SSL协议库、应用程序和密码算法库;如果没有安装,执行命令安装:yuminstallopensslopenssl-devel-y3.1.2创建密钥生成的目的地(文件夹):ps:我是在根目录下的soft文件夹下创建的mkdirserver,mkdirclient先创建这两个文件,然后Linux会默认将生成的秘钥放入其中。3.1.3生成秘钥进入server文件,输入openssl进入Openssl命令行;使用openssl生成私钥,执行以下命令:genrsa-outrsa_private_key.pem2048注意Java开发者需要将私钥转换为PKCS8格式。其他语言不需要这一步。执行以下命令:pkcs8-topk8-informPEM-inrsa_private_key.pem-outformPEM-nocrypt-outrsa_private_key_pkcs8.pem使用openssl生成公钥,执行以下命令:rsa-inrsa_private_key.pem-pubout-outrsa_public_key.pem退出openssl命令行:exit经过以上步骤,我们在当前目录(server)可以看到三个文件:rsa_private_key.pem(RSA私钥)rsa_private_key_pkcs8.pem(RSA私钥,pkcs8格式)(这是java中我们要用到的私钥)rsa_public_key.pem(对应RSA公钥)生成客户端的秘钥和服务器端的秘钥一样,这里就不描述了,想要的朋友有经验的可以按照前面的步骤再做一遍。公钥加密函数rsaEncrypt($content,$public_key_path){$pubKey=文件\_get\_contents($public_key_path);$res=openssl\_get\_publickey($pubKey);//将要加密的内容按照128位拆解解密$result='';对于($i=0;$irsaEncrypt($msg,PUBLIC_KEY);//公钥加密//rsa解密演示$decrypt=$rsa->rsaDecrypt($encrypt,PRIVATE_KEY);//私钥解密//rsa生成数字签名演示$sign=$rsa->rsaSign($msg,PRIVATE_KEY);//通过私钥生成数字签名//rsa验证数字签名演示$verify=$rsa->rsaVerify($msg,PUBLIC\_KEY,$sign);//通过公钥验证数字签名var_dump($verify);