如果客户端不在iOS中提供客户端证书,SSL连接能否成功?

问题描述:

考虑使用实施didReceiveAuthenticationChallenge的NSURLConnectionDataDelegate。如果客户端不在iOS中提供客户端证书,SSL连接能否成功?

如果委托人收到验证质询,并且保护空间为NSURLAuthenticationMethodClientCertificate,而不是提供一个简单的以下操作。

[challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge]; 

服务器有两个选项。

  1. 如果想要求的证书,它可以简单地终止连接和iOS的NSURLConnection的将引发错误NSURLErrorClientCertificateRequired

  2. 如果服务器想要继续,它可以简单地通过不断开连接并且代理应该接收到另一个呼叫didReceiveAuthenticationChallenge

我还没有能够具体验证这个假设。我想可能iOS NSURL堆栈也可能会阻碍。但是我正在寻找对这个假设的某种验证。

您必须在服务器上安装SSL证书,并尝试点击API。那么你应该使用https而不是http。希望这可以帮助你...

+0

是的,我知道SSL的工作原理。但是我指的是SSL/TLS上非常具体的配置,其中客户端认证可能实际上或可能不需要服务器。有许多认证设备/ DMZ控制器可以这种方式进行配置。我所说的是在服务器不需要有效的客户端证书的情况下(即使它要求一个),我相信服务器的预期行为可以继续请求,例如, NSURLConnection不会遇到错误。 –

+0

有人在这里给出答案。请检查此链接: http://*.com/questions/933331/how-to-use-nsurlconnection-to-connect-with-ssl-for-an-untrusted-cert?rq=1 –

+0

该链接涉及服务器身份证书不能被客户端验证。我所描述的这个场景或多或少是相反的。如果服务器在SSL握手期间要求客户端证书(而不是https中的标准)。根据设置,https服务器可以决定客户端没有提供客户端证书,或者即使客户端提供了过期或无法验证的证书,也可以选择继续该事务。 –