生活的道路一旦选定,就要勇敢地走到底,决不回头。

发掘积累过程的快感

首页 » BIBLE模型 » PHP » php实现https双向验证

php实现https双向验证


通常情况下,在部署 https 的时候,是基于 ssl 单向认证的,也就是说只要客户端认证服务器,而服务器不需要认证客户端。
但在一些安全性较高的场景,通常会要求进行客户端认证。从而实现 ssl 的双向认证。

准备工作

  • ca 证书
  • 客户端证书

代码实例

代码中使用 stream_context_create() 函数,创建创建 资源流上下文。具体参数可参考上下文(Context)选项和参数 https://www.php.net/manual/zh/context.php

    /**
     * https 双向验证接口
     * @param string $url  请求链接
     * @param mixed $data body 参数
     * @param array $header 附加header参数
     * @param string $reqType   请求类型
     * @return false|string
     */
    function SendHttps($url,$data,$header=['Content-Type:application/json;charset=utf-8'],$reqType='POST'){
        $opts = [
            'http' => [
                'method' => $reqType,
                'header' => $header,
                'content' => $data,
            ],
            'ssl' => [
                "verify_peer" => true,
                "verify_peer_name" => false,// 忽略客户端证书验证
                'cafile'=>'ca.crt',         // 根证书
                'allow_self_signed'=>true,  // 是否允许自签名证书
                'local_cert'=>'client.crt', // 客户端证书
                'local_pk'=>'client.key',   // 客户端私钥
            ]
        ];
        $opts = stream_context_create($opts);
        return @file_get_contents(trim($url), false, $opts);
    }
互联网信息太多太杂,各互联网公司不断推送娱乐花边新闻,SNS,微博不断转移我们的注意力。但是,我们的时间和精力却是有限的。这里是互联网浩瀚的海洋中的一座宁静与美丽的小岛,供开发者歇息与静心潜心修炼。 “Bible”是圣经,有权威的书,我们的本意就是为开发者提供真正有用的的资料。 我的电子邮件 1217179982@qq.com,您在开发过程中遇到任何问题,欢迎与我联系。
Copyright © 2024. All rights reserved. 本站由 Helay 纯手工打造. 蜀ICP备15017444号