无法信任iphone上的自签名证书

时间:2010-08-23 20:57:02

标签: iphone objective-c cocoa-touch ssl https

我目前正在尝试使用自签名证书连接到服务器。我正在使用NSURLConnection连接到服务器。如何确保我只信任正确的服务器并取消所有其他连接?我使用以下代码

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {  

    SecTrustResultType results;
    SecTrustRef trust = [[challenge protectionSpace] serverTrust];

    SecTrustEvaluate(trust, &results);

    if (results == kSecTrustResultProceed || results == kSecTrustResultConfirm) {
        [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
    } else {
        [challenge.sender cancelAuthenticationChallenge:challenge];
    }

}

目前SecTrustEvaluate始终返回,结果等于kSecTrustResultRecoverableTrustFailure。我已使用iphone配置实用程序在手机上安装了带证书的配置文件,并将其标记为已验证,但未更改结果。

任何人都可以帮助我获得kSecTrustResultProceedkSecTrustResultConfirm的自签名证书的信任结果吗?

1 个答案:

答案 0 :(得分:4)

您需要确保您的证书具有某些扩展名。我配置了一个带有以下扩展名的证书,它对我有用(OpenSSL格式):

basicConstraints=critical,CA:FALSE
extendedKeyUsage=serverAuth
subjectAltName=IP:192.168.x.y
相关问题