簡體   English   中英

使用Mac OS X keychain for Mac上安裝的自簽名證書發送sendSynchronousRequest

[英]sendSynchronousRequest using self signed certificate installed on Mac OS X keychain for Mac

我正在使用Mac OS X (而不是iphone)向Web服務器發送https請求

NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response   error:&error];

但是我收到錯誤代碼= -1202 - “不受信任的服務器證書”

我有來自服務器的自簽名證書,我在Mac的鑰匙串上安裝了證書(並驗證了來自瀏覽器的https請求正常)。

我不想通過異步發送數據和處理didReceiveAuthenticationChallenge來忽略證書

如果證書安裝在鑰匙串中, sendSynchronousRequest應該sendSynchronousRequest 我錯過了什么嗎?

據我所知,你不能用同步請求做到這一點。 至少沒有NSURLConnection。 您可以使用ASIHTTPRequest ,它看起來像這樣:

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setValidatesSecureCertificate:NO]
[request startSynchronous];

在談到第三方庫時, AFNetworking也可以(以多種方式)執行此操作,並且還可以選擇同步工作。

#ifdef DEBUG
#define _AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_     
#endif

最后但並非最不重要的是,您可以在低級別並使用CFNetworking本身(您可以查看ASIHTTPRequest代碼如何執行此操作)來執行此操作,但這可能會比使用NSURLConnectionDelegate添加更多的樣板代碼。

我還提到了第三方庫,因為它們使用不同的方法來異步HTTP請求。 我鼓勵你看看它們,因為它們可能更適合你不想使用NSURLConnectionDelegate的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM