2016-05-17 61 views
0

考慮使用實施didReceiveAuthenticationChallenge的NSURLConnectionDataDelegate。如果客戶端不在iOS中提供客戶端證書,SSL連接能否成功?

如果委託人收到驗證質詢,並且保護空間爲NSURLAuthenticationMethodClientCertificate,而不是提供一個簡單的以下操作。

[challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge]; 

服務器有兩個選項。

  1. 如果想要求的證書,它可以簡單地終止連接和iOS的NSURLConnection的將引發錯誤NSURLErrorClientCertificateRequired

  2. 如果服務器想要繼續,它可以簡單地通過不斷開連接並且代理應該接收到另一個呼叫didReceiveAuthenticationChallenge

我還沒有能夠具體驗證這個假設。我想可能iOS NSURL堆棧也可能會阻礙。但是我正在尋找對這個假設的某種驗證。

回答

0

您必須在服務器上安裝SSL證書,並嘗試點擊API。那麼你應該使用https而不是http。希望這可以幫助你...

+0

是的,我知道SSL的工作原理。但是我指的是SSL/TLS上非常具體的配置,其中客戶端認證可能實際上或可能不需要服務器。有許多認證設備/ DMZ控制器可以這種方式進行配置。我所說的是在服務器不需要有效的客戶端證書的情況下(即使它要求一個),我相信服務器的預期行爲可以繼續請求,例如, NSURLConnection不會遇到錯誤。 –

+0

有人在這裏給出答案。請檢查此鏈接: http://stackoverflow.com/questions/933331/how-to-use-nsurlconnection-to-connect-with-ssl-for-an-untrusted-cert?rq=1 –

+0

該鏈接涉及服務器身份證書不能被客戶端驗證。我所描述的這個場景或多或少是相反的。如果服務器在SSL握手期間要求客戶端證書(而不是https中的標準)。根據設置,https服務器可以決定客戶端沒有提供客戶端證書,或者即使客戶端提供了過期或無法驗證的證書,也可以選擇繼續該事務。 –