+
80
-

uniapp如何使用自己的客户端公钥及私钥与服务端进行接口请求?

uniapp如何使用自己的客户端公钥及私钥与服务端进行接口请求?

以前我们通过https只是用服务器的公钥单向验证,如何实现双向验证?


网友回复

+
0
-

首先一般是在服务器上生成证书,将公钥保存在服务器上,并将私钥保存到uniapp app客户端。

request的时候将自己的私钥对信息进行签名后发送给服务器进行身份验证

// 发送请求
uni.request({
  url: 'https://example.com/api/data',
  method: 'POST',
  data: requestData,
  header: {
    'content-type': 'application/json',
    'Public-Key': publicKey, // 添加公钥到请求头
    'Signature': signature, // 添加签名到请求头
  },
  success: (res) => {
    console.log(res.data);
  },
  fail: (err) => {
    console.error(err);
  }
});

服务端收到后签名后的文件与服务器端公钥进行校验匹配身份

<?php
// 获取所有的请求头信息
$headers = [];
foreach ($_SERVER as $key => $value) {
    if (strpos($key, 'HTTP_') === 0) {
        $headers[str_replace('HTTP_', '', $key)] = $value;
    }
}

// 输出请求头信息
foreach ($headers as $name => $value) {
    echo "$name: $value <br>";
}
//找到Public-Key与Signature文件进行运算
?>

我知道答案,我要回答