2
我在使用SSL連接到服務器時遇到問題。我正在使用ASIHTTPRequest。使用自簽名SSL證書連接到HTTPS
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"https://server:port"]];
//[request setValidatesSecureCertificate:NO];
[request setRequestMethod:@"POST"];
[request setTimeOutSeconds:10];
[request addRequestHeader:@"Host" value:@"server:port"];
[request addRequestHeader:@"Content-Type" value:@"text/json; charset=utf-8"];
上面給出了「發生連接失敗:SSL問題(可能是壞/過期/自簽名證書)」。如果我取消註釋該行[request setValidatesSecureCertificate:NO];我得到404.
我知道,在開發環境中,服務器使用自簽名證書,在生產服務器上,證書由「thawte」簽名。
所以我通過電子郵件將證書發送給自己,在我的設備上點擊使用郵件應用程序的附件 - 它將我重定向到設置並安裝了證書。當然,因爲它是自簽名的,它告訴我證書不可信,但它是證書唯一的問題,它沒有過期等。
現在我採用同樣的方法,我再次收到「連接故障發生:SSL問題(可能是一個壞/到期/自簽名證書)」或404
我還添加了證書,我的項目,加上下面幾行:
NSData* certData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"cert" ofType:@"cer"]];
SecCertificateRef cert = SecCertificateCreateWithData(NULL, (CFDataRef)certData);
[request setClientCertificates:[NSArray arrayWithObject:(id)cert]];
,但它不什麼都不會改變。
我錯過了什麼嗎?
你能推薦任何好的?其中一些人表示他們不會在Firefox 4.0b7上工作。順便說一句,我敢肯定,API使用http和https完全相同。 – 2010-11-21 08:43:51
由於兼容性問題,我還沒有升級到FF 4,所以我不知道'REST Client'是否可以使用它。插件的名稱是'REST Client'。我最近認爲,在開發中使用自簽名證書實際上是浪費金錢。在我使用自簽名證書工作的每個項目上,花費數小時的開發人員時間解決與他們有關的問題。我現在向我的客戶推薦他們只是花幾百美元購買真正的證書,併爲開發人員消除了另一個障礙。 – 2010-11-22 03:06:01
如果你有證書的私鑰,你可能會自己簽名,我相信你可以配置WireShark來解密SSL流量。這可以幫助您確切瞭解您的連接上發生了什麼。 – 2010-11-22 03:09:16