gpt4 book ai didi

iOS:我的 iPhone 应用程序能否访问 iPhone 设备/设备信任库的可信 CA 证书?

转载 作者:太空宇宙 更新时间:2023-11-03 14:16:14 25 4
gpt4 key购买 nike

我的 iPhone 应用程序想要访问 iphone 的 CA 信任库以验证用于 TLS 连接的服务器证书。是否可以访问存储所有已知可信 CA 证书的设备 key 链/信任库?

谢谢,汽车制造商

=================================

感谢您的回复。让我详细介绍一下我的设置。我已经使用 openssl 创建了一个服务器证书,我已经在我的 tomcat 服务器上安装了 https 连接。此外,我已经使用我自己的 CA 签署了这个服务器证书,并通过 Safari(http url)将这个 CA/Root 证书安装到我的 iPhone 中。现在,在我的应用程序中,我想根据安装在 iPhone 设备配置文件中的 CA 证书验证服务器证书(由 tomcat 提供)。

这种服务器验证在 iOS 中是否可行(以编程方式)?

如果服务器证书由公共(public) CA 签名,则 secTrustEvaluate 返回成功的返回码。但是,对于自定义 CA 签名证书,它返回“kSecTrustResultRecoverableTrustFailure”。

谢谢,汽车制造商

最佳答案

您的问题不够具体。有一个非常有用的例子来访问钥匙串(keychain)来存储证书:

https://github.com/kuapay/iOS-Certificate--Key--and-Trust-Sample-Project

我认为您必须使用以下函数添加您的证书(cer 格式):

SecCertificateRef certificate =  SecCertificateCreateWithData(NULL, (CFDataRef) certificateData);

如果成功,您可以将其设置为网络模块的根证书...

如果您想评估它:

        CFArrayRef rootCerts = (CFArrayRef)[client.additionalRootCertificates allObjects];
SecTrustResultType result;
OSStatus returnCode;

if (rootCerts && CFArrayGetCount(rootCerts)) {
// this could fail, but the trust evaluation will proceed (it's likely to fail, of course)
SecTrustSetAnchorCertificates(trust, rootCerts);
}

returnCode = SecTrustEvaluate(trust, &result);

if (returnCode == errSecSuccess) {
proceed = (result == kSecTrustResultProceed || result == kSecTrustResultConfirm || result == kSecTrustResultUnspecified);
if (result == kSecTrustResultRecoverableTrustFailure) {
// TODO: should try to recover here
// call SecTrustGetCssmResult() for more information about the failure
}
}

祝你好运!

关于iOS:我的 iPhone 应用程序能否访问 iPhone 设备/设备信任库的可信 CA 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19786760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com