适用于Android和iOS的相互证书的邮件安全性

Dim*_*ris 10 wcf android wcf-security ios android-ksoap2

我想问以下问题.我们有一个Android和iOS移动应用程序,用于与.NET服务器交换数据.

对于Android,使用kso​​ap2库,而对于iOS,使用带有AEXML库的Alamofire.

我们希望为服务器和应用程序之间的通信启用加密,特别是具有相互证书的Message Security(https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/message-security - 相互证明)

我无法找到任何有关Android或iOS客户端如何加密/解密请求/响应的信息.

能否请您提供相关信息?

提前致谢!

Moh*_*d S 3

对于 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、客户端证书和自定义安全标头。

您也可以查看其示例以获取更多说明。