移动应用程序中的证书信任验证

时间:2015-05-11 10:29:07

标签: ios encryption security-framework

当我的应用程序首次与服务器上的帐户连接时,服务器会生成并返回带有私钥和服务器自签名证书的PKCS12文件。

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

根据您使用的连接类型,您可以选择不同的选项。我通过GCDAyncSocket使用 TCP连接,为此已经有一篇文章可以为您提供正确的方式。 Objective-C: eveluate server certificate signed by our own PKI (root CA) on TLS TCP connection

如果您使用的是 https连接,那么您还可以在堆栈中找到许多问题和答案。