在 Alamofire 问题中上传文件的客户端证书

Posted

技术标签:

【中文标题】在 Alamofire 问题中上传文件的客户端证书【英文标题】:Client certificate with file upload in Alamofire issue 【发布时间】:2016-12-07 13:31:53 【问题描述】:

我能够使用此答案帮助我使用客户端证书登录我的应用程序。

Getting Client Certificate for Mutual Authentication with Alamofire

一切都非常适合登录。现在,我需要发出另一个上传文件的请求。我使用与上一篇文章相同的代码来获取 p12 文件并创建我的 serverTrustPolicy 并将其添加到我的会话管理器中,但是当我提出请求时,服务器告诉我我没有将证书传递给他们。

我不明白为什么该代码适用于一个实例,而不适用于另一个实例。两者的唯一区别是:

作品:

manager = Alamofire.SessionManager(serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicy))

不起作用:

manager = Alamofire.SessionManager(configuration: configuration, serverTrustPolicyManager : ServerTrustPolicyManager(policies: serverTrustPolicy))

两者都使用完全相同的 didChallenge 委托。

如果有任何见解,我将不胜感激。

【问题讨论】:

【参考方案1】:

所以显然问题是由于有一个配置和一个 ServerTrustPolicyManager。当我只有一个 STPM 并将我的标题放在上传函数中时,调用就可以正常工作。也许尝试在应用程序中进行两次后台调用会导致问题。默认调用和临时调用都可以正常工作。

【讨论】:

以上是关于在 Alamofire 问题中上传文件的客户端证书的主要内容,如果未能解决你的问题,请参考以下文章

使用客户端证书与 Alamofire 进行身份验证

使用 Swift 4 和 Alamofire 获取客户端证书以用于 Https 调用身份验证

在 Alamofire 4 中动态允许自签名证书

您如何使用 Alamofire 测试证书固定?

iOS Swift + Alamofire 上传带有 exif 数据的照片

如何在 multiformData 的 alamofire 中上传文件?