6
我目前正嘗試使用自簽名證書連接到服務器。我正在使用NSURLConnection連接到服務器。我如何確保我只信任正確的服務器並取消所有其他連接?我使用下面的代碼無法信任iphone上的自簽名證書
- (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配置實用程序在手機上安裝了帶有證書的配置文件,並將其標記爲已驗證,但未更改結果。
任何人都可以幫我獲得kSecTrustResultProceed
或kSecTrustResultConfirm
的自信簽名結果嗎?
尼斯尖端,它的工作原理,如果你正在** ** kSecTrustResultRecoverableTrustFailure ......特別是「的SubjectAltName」鍵是非常重要。如果你的服務器在被調用時響應DNS,你應該使用'subjectAltName = DNS:example.com',或者如果你想'subjectAltName = IP:10.0.1.5,DNS:example.com'。謝謝 ! – gwdp 2012-01-20 06:30:32