当我的应用程序首次与服务器上的帐户连接时,服务器会生成并返回带有私钥和服务器自签名证书的PKCS12文件。
此主键的目的是:a)解密服务器发送给它的数据,以及b)签名请求,以便服务器验证客户端的身份。
在这种情况下SecTrustEvaluate
是否有一点?我没有使用证书以任何方式验证服务器的身份,仅用于解密/签名数据。目前我有:
SecTrustResultType trustResult;
status = SecTrustEvaluate(myTrust, &trustResult);
NSAssert(status == errSecSuccess, @"SecTrustEvaluate failed.");
这与kSecTrustResultRecoverableTrustFailure失败 - 几乎可以肯定是由于自签名证书。
如果需要(或强烈建议),有人可以指出我需要做些什么来解决这个问题吗?
答案 0 :(得分:0)
SecTrustEvaluate(trust, &result);
正在检查系统是否信任连接。
您的证书必须在可信任的链中。您第一次使用安全连接时。因此,在您的情况下,我认为您必须提供可以验证服务器是否可信的通用证书。
根据您使用的连接类型,您可以选择不同的选项。我通过GCDAyncSocket
使用 TCP连接,为此已经有一篇文章可以为您提供正确的方式。 Objective-C: eveluate server certificate signed by our own PKI (root CA) on TLS TCP connection
如果您使用的是 https连接,那么您还可以在堆栈中找到许多问题和答案。