• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 如何在 iOS 上评估 x509 证书的信任度

[复制链接]
菜鸟教程小白 发表于 2022-12-12 22:33:01 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我目前正在开发一个具有端到端加密功能的 iOS 应用。为了让用户相互验证,每个用户都会生成一个 x509 证书签名请求 (CSR) 并将 CSR 发送到我们的 CA 服务器进行签名。

用户可以通过验证其他用户的证书是否由 CA 签署来信任其他用户。

我的问题是:

在 iPhone 上,我目前拥有需要验证的 CA 证书和用户证书。 我如何验证用户证书实际上是由 CA 签署的?

我最好的尝试是下面的代码,但它没有指定评估 clientCert 的依据,这让我感到困惑。

-(BOOL) evaluateTrustSecCertificateRef) clientCert{

    SecPolicyRef myPolicy = SecPolicyCreateBasicX509();

    SecCertificateRef certArray[1] = { clientCert };
    CFArrayRef myCerts = CFArrayCreate(
                                   NULL, (void *)certArray,
                                   1, NULL);


    SecTrustRef myTrust;
    OSStatus status = SecTrustCreateWithCertificates(
                                                 myCerts,
                                                 myPolicy,
                                                 &myTrust);


    SecTrustResultType trustResult;
    if (status == noErr) {
        status = SecTrustEvaluate(myTrust, &trustResult);
    }

    NSLog(@"trustresult %d", trustResult);

    return trustResult == kSecTrustResultProceed || trustResult == kSecTrustResultUnspecified;
}



Best Answer-推荐答案


您的代码根据钥匙串(keychain)中存在的 anchor (可信根)证书评估您的 clientCert。如果您想根据您的 caCert 对其进行评估,您需要将您的 caCert 注册为 SecTrustSetAnchorCertificates 的 anchor 证书。

或者,您可以将您的 caCert 添加到 certArray:

SecCertificateRef certArray[2] = { clientCert, caCert };
CFArrayRef myCerts = CFArrayCreate(
                               NULL, (void *)certArray,
                               2, NULL);


SecTrustRef myTrust;
OSStatus status = SecTrustCreateWithCertificates(
                                             myCerts,
                                             myPolicy,
                                             &myTrust);

查看:https://developer.apple.com/library/ios/documentation/security/conceptual/CertKeyTrustProgGuide/iPhone_Tasks/iPhone_Tasks.html#//apple_ref/doc/uid/TP40001358-CH208-SW13

它说: 4. ...如果您有证书链的中间证书或 anchor 证书,您可以将它们包含在传递给 SecTrustCreateWithCertificates 函数的证书数组中。这样做可以加快信任评估。

关于ios - 如何在 iOS 上评估 x509 证书的信任度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24013306/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap