ios p12 证书 certificate id遇到的坑

一、ios p12 证书中的参数

   博主遇到的问题是,当我们后端与ios传输一个加密的p12的证书时,首先后端对证书、私钥进行加密,

  后端采用nodejs,加密p12证书需要用到 node-forge库

 可参照实例demo

/**
 * 生成p12证书 base64
 */
async function createP12(data, uuid) {
    try {
        let pki = forge.pki;
        let cert = forge.pki.certificateFromPem(data.certificatePem);
        let sk_forge = forge.pki.privateKeyFromPem(data.keyPair.PrivateKey);

        let pkcs12 = forge.pkcs12.toPkcs12Asn1(sk_forge, cert, "123456", {
            friendlyName: uuid,
            algorithm: '3des'
        });
        let p12Der = forge.asn1.toDer(pkcs12).getBytes();
        let p12b64 = forge.util.encode64(p12Der);
        return p12b64;
    } catch (err) {
        throw err;
    }
}

后端在生成p12证书时候用到data,data是由aws iot自动生成的,里面会包含证书和私钥

123456是加解密用到的密码

3des是用到的加密算法

最坑爹的就是friendlyName这个参数,最开始后端不是用的随机数uuid,用的统一的“default”,

我们的ios是可以切换账户,而且不同的账户需要用不同的证书,这个friendlyName对应的就是ios的certificate id;

在测试的过程中,第一个账号登录,certificate id用“default”解开p12的data,使用都是ok的;

最坑爹的是切换了一个账户,然后又用certificate id=“default”去解,应该是有缓存机制,取的还是上一个用户的证书

然后变更了思路,后台加密证书用随机数,然后ios再用同一个随机数去解,这样每次都能取到不同的用户证书了。

就这一个小问题花了两天时间解决,因为没有相关的文档,ios也没有介绍 certificate id的作用,只好自己摸索了,所以记下来希望给更多的人帮助踩坑。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值