Ios XMPPFramework-安全选项
我想使用XMPPFramework实现服务器端安全。服务器必须在建立连接之前验证来自客户端的证书。我发现有以下几种方法可以做到这一点:Ios XMPPFramework-安全选项,ios,security,xmpp,xmppframework,Ios,Security,Xmpp,Xmppframework,我想使用XMPPFramework实现服务器端安全。服务器必须在建立连接之前验证来自客户端的证书。我发现有以下几种方法可以做到这一点: kCFStreamSSLLevel kCFStreamSSLAllowsExpiredCertificates kCFStreamSSLAllowsExpiredRoots kCFStreamSSLAllowsAnyRoot kCFStreamSSLValidatesCertificateChain kCFStreamSSLPeerName kCFStreamS
kCFStreamSSLLevel
kCFStreamSSLAllowsExpiredCertificates
kCFStreamSSLAllowsExpiredRoots
kCFStreamSSLAllowsAnyRoot
kCFStreamSSLValidatesCertificateChain
kCFStreamSSLPeerName
kCFStreamSSLCertificates
但我不知道用什么做什么。有谁能帮助我如何使用这些方法实现服务器端安全性?服务器是Openfire,客户端是iOS设备。不幸的是,您列出的以下5个安全选项已被弃用
kCFStreamSSLLevel
kCFStreamSSLAllowsExpiredCertificates
kCFStreamSSLAllowsExpiredRoots
kCFStreamSSLAllowsAnyRoot
kCFStreamSSLValidatesCertificateChain
从
至于其他两个方案,
从
调用SSLSetPeerDomainName
指定要连接的对等方的完全限定域名(可选,但强烈建议)
调用SSLSetCertificate
指定用于身份验证的证书(服务器端需要,客户端可选)
您最好的选择是: 使用
xmppStream:willSecureWithSettings:
然后
在
xmppStream:didReceiveTrust:
中验证服务器的证书,只需让诊断忽略它,直到可以开发替换方法。在生效代码上方使用此选项。#pragma-clang诊断被忽略“-Wdeprecated声明”
@vishnuvarthan查看本文问答中的代码:链接使用NSURL,但我不想要NSURL,我正在实现XMPP。你能告诉我与我在前面评论中给出的链接类似的方法吗?我正在寻找类似的方法。@KeithOYS嘿,你实现过文件传输功能吗?如果是,请您帮助解决一些有关文件传输的问题。@KeithOYS我的应用程序包中有一个由服务器提供的证书,我如何在代码中导入证书并将其发送到服务器进行身份验证。@KeithOYS您能告诉我如何在xmpp中使用TLS 1.0版吗
* ==== The following UNAVAILABLE KEYS are: (with throw an exception)
*
* - kCFStreamSSLAllowsAnyRoot (UNAVAILABLE)
* You MUST use manual trust evaluation instead (see GCDAsyncSocketManuallyEvaluateTrust).
* Corresponding deprecated method: SSLSetAllowsAnyRoot
*
* - kCFStreamSSLAllowsExpiredRoots (UNAVAILABLE)
* You MUST use manual trust evaluation instead (see GCDAsyncSocketManuallyEvaluateTrust).
* Corresponding deprecated method: SSLSetAllowsExpiredRoots
*
* - kCFStreamSSLAllowsExpiredCertificates (UNAVAILABLE)
* You MUST use manual trust evaluation instead (see GCDAsyncSocketManuallyEvaluateTrust).
* Corresponding deprecated method: SSLSetAllowsExpiredCerts
*
* - kCFStreamSSLValidatesCertificateChain (UNAVAILABLE)
* You MUST use manual trust evaluation instead (see GCDAsyncSocketManuallyEvaluateTrust).
* Corresponding deprecated method: SSLSetEnableCertVerify
*
* - kCFStreamSSLLevel (UNAVAILABLE)
* You MUST use GCDAsyncSocketSSLProtocolVersionMin & GCDAsyncSocketSSLProtocolVersionMin instead.
* Corresponding deprecated method: SSLSetProtocolVersionEnabled
*
*
* Please refer to Apple's documentation for corresponding SSLFunctions.