[Ios] SSL與AFNetworking固定



Answers

如果您正在使用AFNetworking 2.x,並且您正在使用正確的.cer,但在您的調用中仍然收到錯誤代碼-1012,則應該禁用validatesCertificateChain

AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];
securityPolicy.validatesCertificateChain = NO;

或者你可以把它全部在pinnedCertificates中的整個證書鏈中pinnedCertificates

Question

在我的應用程序中,我使用https和一個自簽名的SSL證書來保護我的客戶端和服務器之間的連接。

我試圖讓AFNetworking庫在我的證書的副本上進行SSL固定。

AFURLConnectionOperation頭中,我定義了兩個:

#define _AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_ =1
#define _AFNETWORKING_PIN_SSL_CERTIFICATES_ =1

在調用AFJSONRequestOperationstart之前,我將SSLPinningMode屬性設置為AFSSLPinningModeCertificate

但是,當試圖執行JSON請求時,我不斷收到以下錯誤:

Error Domain=NSURLErrorDomain Code=-1012 "The operation couldn’t be completed. 
(NSURLErrorDomain error -1012.)" UserInfo=0x758f120 
{NSErrorFailingURLKey=https://mydomain.com,
NSErrorFailingURLStringKey=https://mydomain.com}

AFURLConnectionOperation標頭中,我讀到SSL固定與.cer證書一起使用,但是在我自己託管的OS X Web服務器中,我有一個.crt證書。

這是問題嗎? 有沒有辦法使AFNetworking與.crt工作?

在一個窗口框中,我將.crt轉換為.cer,並嘗試將其綁定到我的應用程序中,但仍然出現相同的錯誤。 我應該嘗試使用新創建的.cer文件來切換.crt文件,即使在服務器端也是如此。




Links