Dim*_*ris 10 wcf android wcf-security ios android-ksoap2
我想问以下问题.我们有一个Android和iOS移动应用程序,用于与.NET服务器交换数据.
对于Android,使用ksoap2库,而对于iOS,使用带有AEXML库的Alamofire.
我们希望为服务器和应用程序之间的通信启用加密,特别是具有相互证书的Message Security(https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/message-security - 相互证明)
我无法找到任何有关Android或iOS客户端如何加密/解密请求/响应的信息.
能否请您提供相关信息?
提前致谢!
对于 iOS 部分。
默认情况下,Alamofire 将使用安全框架提供的 Apple 内置验证来评估服务器提供的证书链。
虽然这保证了证书链有效,但它并不能防止中间人 (MITM) 攻击或其他潜在漏洞。
为了减轻 MITM 攻击,处理敏感客户数据或财务信息的应用程序应使用 ServerTrustPolicy 提供的证书或公钥固定。
ServerTrustPolicy ServerTrustPolicy 枚举评估通过安全 HTTPS 连接连接到服务器时通常由 URLAuthenticationChallenge 提供的服务器信任。
let serverTrustPolicy = ServerTrustPolicy.pinCertificates(
certificates: ServerTrustPolicy.certificates(),
validateCertificateChain: true,
validateHost: true
)
Run Code Online (Sandbox Code Playgroud)
服务器信任评估有许多不同的情况,使您可以完全控制验证过程:
performDefaultEvaluation
:使用默认的服务器信任评估,同时允许您控制是否验证质询提供的主机。
pinCertificates
:使用固定证书来验证服务器信任。如果固定证书之一与服务器证书之一匹配,则服务器信任被视为有效。
pinPublicKeys
:使用固定的公钥来验证服务器信任。
如果固定公钥之一与服务器证书公钥之一匹配,则服务器信任被视为有效。
disableEvaluation
:禁用所有评估,从而始终将任何服务器信任视为有效。
customEvaluation
:使用关联的闭包来评估服务器信任的有效性,从而使您可以完全控制验证过程。谨慎使用。
AlamoFire文档
对于 Android 部分,我没有经验,但我遇到有人询问同样的事情并得到了答案
您需要做的只是将证书安装到 Web 服务器中并调用 Web 服务 URL,例如https://my.webservice.url/而不是http://my.webservice.url/。
如果您的证书是自签名证书,意味着您不是从证书颁发机构购买的,则需要设置 SSLSocketFactory。您可以查看项目维基以了解如何执行此操作: http://code.google.com/p/ksoap2-android/wiki/CodingTipsAndTricks#How_to_set_the_SSLSocketFactory_on_a_https_connection__in_order
检查这里。
这可能也有帮助
更新:我找到了这个框架SOAPEEngine 这个。支持基本、摘要和 NTLM 身份验证、WS-Security、客户端证书和自定义安全标头。
您也可以查看其示例以获取更多说明。
归档时间: |
|
查看次数: |
446 次 |
最近记录: |