0

当我的应用程序第一次连接到服务器上的帐户时,服务器会生成并返回一个 PKCS12 文件,其中包含来自服务器的私钥和自签名证书。

此主密钥的目的是 a) 解密服务器发送给它的数据,以及 b) 签署请求,以便服务器可以验证客户端的身份。

SecTrustEvaluate在这种情况下有什么意义吗?我没有使用证书以任何方式验证服务器的身份,仅用于数据的解密/签名。目前我有:

SecTrustResultType trustResult;
status = SecTrustEvaluate(myTrust, &trustResult);
NSAssert(status == errSecSuccess, @"SecTrustEvaluate failed.");

这与 kSecTrustResultRecoverableTrustFailure 失败 - 几乎可以肯定是由于自签名证书。

如果需要(或强烈建议),有人可以指出我需要做些什么来解决这个问题吗?

4

1 回答 1

0

SecTrustEvaluate(trust, &result);正在检查系统是否可以信任连接
您的证书必须在链中才能被信任。您已经是第一次使用安全连接。因此,在您的情况下,我认为您必须提供可以验证您的服务器是否可信赖的通用证书。

根据您使用的连接类型,您有不同的检查选项。我正在使用TCP 连接GCDAyncSocket为此已经有一篇文章可以让您走上正确的道路。Objective-C:评估由我们自己的 PKI(根 CA)在 TLS TCP 连接上签名的服务器证书

如果您使用的是https 连接,您还会在堆栈上找到很多问题和答案。

于 2015-05-12T10:28:04.267 回答