iOS:自签名证书存在问题。SSL握手错误(-9824)
我有一个应用程序,我需要执行两步身份验证,长话短说,我将从服务器获取每个用户的base64编码pem格式证书,并在每个请求中使用它们 首先我生成一个密钥对,生成一个CSR,给他们CSR,他们给我证书,这就是我必须使用它的地方,然后失败。对于每个请求,控制台中都会出现以下错误: cf网络SSLHandshake失败(-4) cf网络SSLHandshake失败(-9824) cf网络SSLHandshake失败(-9824) NSURLConnection/CFURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9824) 我的做法如下: -从他们发送给我的PEM格式的签名证书中获取DER编码数据 -制作一个安全证书,我将其添加到钥匙链中 -按标签查询密钥链中的SecIdentityRef -然后我做一些基本上不必要的事情,比如从身份中获取SecCertificateRef和私钥,主要是为了确定发生了什么 -我还插入了一个来自服务器的CA证书,并从密钥链中获取对该证书的引用(不确定是否需要将其用于凭据,但我尝试使用或不使用它-结果是相同的) -然后,我使用标识和证书初始化凭据,并在获得NSURLAuthenticationMethodClientCertificate身份验证方法时使用它(我不进行检查,但这是除了服务器信任之外的所有结果) 因此,到目前为止,没有任何内容是空的,所有内容都得到初始化,看起来不错,但请求没有成功。当我尝试在所有请求上使用服务器信任凭据时,我通过并没有得到错误,但我的服务器正在给我一个应该的安全错误。一旦我对任何挑战使用自定义凭据,我就会收到上述错误 注意:我知道代码很混乱,我不应该在每个请求上插入证书,但这仍然是很早的工作,这不是问题,因为refs得到了正确的实例化iOS:自签名证书存在问题。SSL握手错误(-9824),ios,ssl,certificate,self-signed,Ios,Ssl,Certificate,Self Signed,我有一个应用程序,我需要执行两步身份验证,长话短说,我将从服务器获取每个用户的base64编码pem格式证书,并在每个请求中使用它们 首先我生成一个密钥对,生成一个CSR,给他们CSR,他们给我证书,这就是我必须使用它的地方,然后失败。对于每个请求,控制台中都会出现以下错误: cf网络SSLHandshake失败(-4) cf网络SSLHandshake失败(-9824) cf网络SSLHandshake失败(-9824) NSURLConnection/CFURLConnection HTTP
这是服务器面临的身份验证挑战。您可以通过以下代码绕过(使用NSURLCOnnection) 注意:如果您在app store上上传应用程序,请不要使用上述内容 对于上面的iOS 9将不起作用,请按如下方式编辑plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
NSAppTransportSecurity
NSAllowsArbitraryLoads
这是服务器面临的身份验证挑战。您可以通过以下代码绕过(使用NSURLCOnnection)
注意:如果您在app store上上传应用程序,请不要使用上述内容
对于上面的iOS 9将不起作用,请按如下方式编辑plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
NSAppTransportSecurity
NSAllowsArbitraryLoads
我已经启用了AllowsArbitraryLoads。我也尝试过这个分类,但没有成功。它会被调用,但不会阻止握手错误的发生。它也与iOS9的TLS1.2策略无关。我已经启用了AllowsArbitraryLoads。我也尝试过这个分类,但没有成功。它会被调用,但不会阻止握手错误的发生。它也与iOS 9针对TLS 1.2的策略无关。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>