0

我有这两个文件(certificate.pemprivate_key.pem),它们由我使用的 API 提供。我需要使用这些文件在 Swift 项目中签署我的 http 请求。

我可以用 Postman 做到这一点。我在 Postman 的添加客户端证书选项卡中添加了 certificate.pem 作为 CRT 文件和 private_key.pem 作为 KEY 文件。当我在 Postman 上发送带有标头和参数的 PUT 请求时,我会从 Web 服务器收到成功消息。

但是当我在 Xcode 中使用 Swift3 和 Alamofire 尝试所有这些东西时,我总是收到错误消息。你能帮我如何将这个 PEM 文件固定到 http 请求吗?

4

1 回答 1

0

Alamofire 不直接支持PEM文件。您需要先将它们转换为此处解释的DER文件。然后,您需要将新的DER文件添加到您的应用目标。最后,您按照 README 的安全部分中的说明启用服务器信任策略。

let serverTrustPolicies: [String: ServerTrustPolicy] = [
    "test.example.com": .pinCertificates(
        certificates: ServerTrustPolicy.certificates(),
        validateCertificateChain: true,
        validateHost: true
    ),
    "insecure.expired-apis.com": .disableEvaluation
]

let sessionManager = SessionManager(
    serverTrustPolicyManager: ServerTrustPolicyManager(
        policies: serverTrustPolicies
    )
)

ServerTrustPolicy.certificates()可以在此处找到该调用,该调用从包中加载CERDER文件中的所有数据并将它们用于固定。

希望这可以帮助您前进。

于 2018-04-17T14:00:04.743 回答