接口简介

该接口用于解析苹果开发者证书(P12 文件)和描述文件(.mobileprovision 文件),并进行OCSP验证以判断证书状态(有效/已吊销/错误)。接口会返回证书信息、描述文件信息以及匹配状态。

请求方式

请求头信息

请确保请求头中设置了以下字段,以保证接口正确解析请求和返回JSON数据:

Access-Control-Allow-Origin: *
Access-Control-Allow-Method: POST,GET
Content-type: application/json;charset=utf-8

注意:由于接口处理文件上传,所以建议客户端设置 multipart/form-data 请求头。服务端响应时则返回JSON格式的数据。

请求参数

参数名称类型说明是否必传
P12FileFileP12证书文件,需包含私钥的数字证书
P12PassWordStringP12证书密码,用于解密证书文件
MobileProvisionFileFile描述文件(.mobileprovision文件),用于解析应用和开发者信息

示例说明:

通过POST提交表单数据,P12File和MobileProvisionFile应作为文件字段上传,P12PassWord作为普通表单字段提交。

返回结果

接口响应为JSON格式,示例响应如下:

{
    "code": 200, //状态码,200表示成功
    "message": "检测成功", //'检测成功'表示操作成功
    "data": {
        "certificates": {
            "name": "iPhone Distribution: Ministere de I Emploi de la Protection Sociale", //证书名称
            "from": "2023-11-16 13:47:52",//证书生效日期
            "to": "2026-11-15 13:47:51",//证书过期日期
            "unit": "Apple Inc.",//签发机构
            "is_revoked": true, //证书是否被吊销,false表示未吊销
            "status": "已吊销", //状态,有效 或 已吊销
            "fingerprint": "51:F5:F2:7E:83:BD:51:73:BC:87:82:37:1F:24:DD:ED:AF:F4:6B:CD",//证书指纹,用于唯一标识证书
            "serial": 76783665671638534154865607128819835567 //证书序列号
        },
        "mobileprovision": {
            "cert_type": "Individual",//Enterprise企业,Individual个人
            "developers": [
                "开发者账号 (Team ID: VV6YRRU69K)"//配置名称 开发者账号信息,包含Team ID
            ],
            "app_id": "00008130-001845511A02001C65", //应用程序ID 
            "id": "VV6YRRU69K.com.neicexiahh2303.sign9316",//应用的Bundle ID
            "platform": [
                "iOS",
                "xrOS",
                "visionOS"
            ],  //支持的平台,如iOS、xrOS、visionOS
            "from": "2025-01-06 12:14:51",//描述配置文件生效日期
            "cert_end_date": 281,//描述有效期剩余
            "expiration_time": "2025-10-14 12:14:51",//描述配置文件过期时间
            "is_expired": false,//配置文件是否过期,false表示未过期
            "certificates": [
                "00008130-001845511A02001C"
            ],//关联的证书UDID
            "developer_certificates": [
                {
                    "fingerprint": "51:F5:F2:7E:83:BD:51:73:BC:87:82:37:1F:24:DD:ED:AF:F4:6B:CD",   //开发者描述指纹
                    "serial": 76783665671638534154865607128819835567 //描述序列号
                }
            ],
            "is_matching": false,   //证书和描述是否匹配,false表示不匹配
            "uuid": "4cdfe7ea-7073-4f0f-ab81-5217dc48d990", //配置文件的唯一标识符
            "version": 1,   //配置文件版本
            "team_name": "Jing Tong"    //团队名称
        },
        "is_matching": false,//整体证书是否匹配,false表示不匹配
        "permissions": { //true代表有权限,false代表无权限
            "wifi": true, //WiFi访问
            "hotspot": false, //热点
            "aps": true,    //推送通知
            "keychain": true,//钥匙串访问
            "debug": false, //调试
            "siri": true,   //Siri
            "health": true, //健康数据
            "groups": true, //应用组
            "purchase": true,   //应用内购买
            "domains": true,    //关联域
            "autofill": true,   //自动填充
            "class": true,  //课堂
            "home": true,   //家庭
            "game": true,   //游戏中心
            "audio": true,  //音频
            "multipath": true,  //多路径
            "networkextension": true,   //网络扩展
            "nfc": true,    //NFC
            "vpn": true,    //VPN
            "wireless": true,   //无线配置
            "hls_low_latency": false,   //低延迟HLS
            "health_access": true,  //健康数据访问
            "extended_virtual_addressing": true,    //扩展虚拟地址
            "increased_memory_limit": true  //增加内存限制
        }
    }
}

请求示例

示例1:使用 cURL 命令行工具

curl -X POST "https://yourdomain.com/api/verify_cert.php" \
  -F "P12File=@/path/to/your_certificate.p12" \
  -F "P12PassWord=your_certificate_password" \
  -F "MobileProvisionFile=@/path/to/your_mobileprovision.mobileprovision"

示例2:使用 PHP 模拟POST上传

$url = "接口地址";

$postFields = [
    'P12File'             => new CURLFile('/path/to/your_certificate.p12'),
    'P12PassWord'         => 'your_certificate_password',
    'MobileProvisionFile' => new CURLFile('/path/to/your_mobileprovision.mobileprovision'),
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>
© 版权声明
评论 抢沙发

请登录后发表评论

    暂无评论内容