苹果ios打包签名ipa文件应用app的验证的证书是怎么授信的原理是什么?

news/2024/7/20 22:32:26 标签: ios

苹果打包应用的证书依靠的是公钥基础设施(Public Key Infrastructure,PKI)原理。图片来源https://news.gulufenfa.com/post/144

首先咱们要知道苹果的验证是基于PKI系统,PKI是一套基于非对称加密算法的加密体系,通过证书来验证和确保通信双方的身份和数据的完整性。
开发者生成一对密钥,包括私钥和公钥。
举个例子:密钥就是秘密的要是,你的p12就相当于一个锁,那么秘钥去系统验证然后开你p12的锁行程联通才可以验证使用。基本上就是这个例子说的不对的欢迎各位同学指正批评
然后开发者使用私钥对应用进行数字签名,生成应用的签名文件。
打包的时候咱们开发者将签名文件和其他必要的信息,如开发者账号、应用信息等,一起提交给苹果。
希望大佬们给予指正哈!
java复制代码
// 生成密钥对
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(“RSA”);
keyPairGenerator.initialize(2048); // 初始化密钥长度为2048位
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PrivateKey privateKey = keyPair.getPrivate(); // 私钥
PublicKey publicKey = keyPair.getPublic(); // 公钥
// 开发者使用私钥对应用进行数字签名
Signature signature = Signature.getInstance(“SHA256withRSA”);
signature.initSign(privateKey);
File appFile = new File(“path/to/app.apk”);
byte[] appData = Files.readAllBytes(appFile.toPath());
signature.update(appData);
byte[] signatureBytes = signature.sign();
// 开发者提交签名文件和相关信息给苹果
// 苹果进行验证并生成应用的证书
// 开发者打包应用时将证书和应用一起进行打包
// 用户设备验证证书并解密验证签名
CertificateFactory certificateFactory = CertificateFactory.getInstance(“X.509”);
Certificate appCertificate = certificateFactory.generateCertificate(appCertificateData);
PublicKey appPublicKey = appCertificate.getPublicKey();
Signature verifySignature = Signature.getInstance(“SHA256withRSA”);
verifySignature.initVerify(appPublicKey);
verifySignature.update(appData);
boolean isValid = verifySignature.verify(signatureBytes);
请注意,上述代码示例是使用Java语言表示的,具体应用开发过程可能会根据不同语言和开发环境的要求而有所差异。

打包完成后我们可以提交给苹果商城,需要审核通过后才可以使用!
如果需要内测直接用手机联通测试,也可以用个人开发者或者公司开发者的100人内测真机!
也可以使用官方的内测程序,公司内部的可以用企业签名进行公司内部使用!

用户下载应用时,设备会验证应用的证书是否有效,以确保应用的来源可信。

如果证书有效,则设备会使用公钥对应用的签名进行解密和验证,确保应用在传输过程中未被修改和篡改。设备会根据证书和签名的验证结果判断应用是否可信并执行相应的操作。
基本上就是这些授信的原理了,还有一些常见的基本知识,内容有限同学们就凑合着看吧,如果同学们有更好的见解可以评论区评论!


http://www.niftyadmin.cn/n/5073555.html

相关文章

LuatOS-SOC接口文档(air780E)-- gmssl - 国密算法

sm.sm2encrypt(pkx,pky,data)# sm2算法加密 参数 传入值类型 解释 string 公钥x,必选 string 公钥y,必选 string 待计算的数据,必选,最长255字节 返回值 返回值类型 解释 string 加密后的字符串, 原样输出,未经HEX转换 例子 local originStr "encryptio…

element ui中父子组件共用一个el-dialog弹窗,切换组件页面弹窗进行关闭

在Element UI中,如果多个父子组件共用一个el-dialog弹窗,并且需要在切换组件页面时关闭弹窗,你可以考虑以下方法来实现: 使用Vuex进行状态管理: 在Vuex中创建一个状态来管理弹窗的显示状态(例如&#xff0…

【SpringBoot】文件分片上传、合并

背景 在上传大型文件时,一般采用的都是分片、断点续传等技术,这样不会导致因文件过大而造成系统超时或者过压等情况。 接下来我们进入教学 如果有帮助到您,麻烦请点击个收藏、赞,谢谢~ 一、实际效果图 整个前端网页的效果图&…

周总结【java项目】

项目进度: 学习了JavaFX,下载了sceneBuilder辅助工具构建窗口(目前建立了登陆,注册,忘记密码的界面),然后是学习了MySQL的连接,现在的项目是刚连上数据库; 下一步&…

2023牛客OI赛前集训营-提高组(第二场)B.出租

2023牛客OI赛前集训营-提高组(第二场)B.出租 B-出租_2023牛客OI赛前集训营-提高组(第二场) (nowcoder.com) 文章目录 2023牛客OI赛前集训营-提高组(第二场)B.出租题目大意思路 题目大意 在一条路上有 n …

如何委婉地询问客户一些关键的信息,以便了解他们的需求和期望

一种提问技巧是使用**SPIN提问法**,它是一种顾问式销售的方法,通过实情探询、问题诊断、启发引导和需求认同四大类提问技巧来发掘、明确和引导客户需求与期望,不断推动销售过程向前发展。 具体来说,您可以根据以下四个阶段来设计…

zookeeper入门篇之分布式锁

文章目录 前言非公平锁公平锁 前言 上一篇说过,zookeeper是一个类似文件系统的数据结构,每个节点都可以看做是一个文件目录,也就是说,我们所创建的节点是唯一的,那么分布式锁的原理就是基于这个来的。 代码仓库&…

剑指offer——JZ79 判断是不是平衡二叉树 解题思路与具体代码【C++】

一、题目描述与要求 判断是不是平衡二叉树_牛客题霸_牛客网 (nowcoder.com) 题目描述 输入一棵节点数为 n 二叉树,判断该二叉树是否是平衡二叉树。 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 平衡二叉树(…