Alamofire - 使用椭圆曲线键的非对称加密(SSL钉扎)

时间:2017-08-26 08:15:15

标签: ios swift alamofire pinning

使用Alamofire连接服务器时遇到问题。

我使用此代码(信用到cnoon):

class NetworkManager {    
    public static var manager : Alamofire.SessionManager = {
        // Create the server trust policies
        let serverTrustPolicies: [String: ServerTrustPolicy] = [
            "my.server.example.com/api": .pinCertificates(
                certificates: ServerTrustPolicy.certificates(),
                validateCertificateChain: true,
                validateHost: true
            )
        ]
        // Create custom manager
        let configuration = URLSessionConfiguration.default
        configuration.httpAdditionalHeaders = Alamofire.SessionManager.defaultHTTPHeaders
        let man = Alamofire.SessionManager(
            configuration: URLSessionConfiguration.default,
            serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
        )
        return man
    }()
}

我有这些证书,我转换为.der格式:

client.cert.der
ca.cert.der

我还有这个带密钥的文件 - 它不是证书,只有密钥: client.key.pem

文件内容为(示例):

-----BEGIN EC PARAMETERS-----
AxxrtknPQXGLw==
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
HFDHJBJDB7asjqojhJhhfehiHguegufbBIWhgfbibIUBbf+Hhifhie87nbGrztOIUb
giGiGIGgzfwtUZTuio+hifegfiIUwzzUG768+HhifeihiI546banneeoPJnkienivbiBIFW
HkGVi7d/HJihgfegui876gvejfbGUv/Zb7867798g
-----END EC PRIVATE KEY-----

所以问题是,如何使用这两个证书连接到服务器,密钥和Alamofire(如果Alamofire无法使用它,那么它不是强制性的)。

编辑: 这是回复:

  

2017-08-26 12:26:31.351511 + 0200 TestAppO2 [79217:6915260] []   nw_coretls_callback_handshake_message_block_invoke_3   tls_handshake_continue:[ - 9812] 2017-08-26 12:26:31.351   TestAppO2 [79217:6915379] NSURLSession / NSURLConnection HTTP加载失败   (kCFStreamErrorDomainSSL,-9813)响应:nil   Alamofire.DefaultDataResponse(要求:   可选(https://my.server.example.com/api),响应:无,数据:   可选(0字节),错误:可选(错误域= NSURLErrorDomain   Code = -1202"此服务器的证书无效。你可能是   连接到假装的服务器   “https://my.server.example.com”可以保密   有风险的信息。"   UserInfo = {NSURLErrorFailingURLPeerTrustErrorKey =,NSLocalizedRecoverySuggestion =你想要吗?   无论如何连接到服务器?,_kCFStreamErrorDomainKey = 3,   _kCFStreamErrorCodeKey = -9813,NSErrorPeerCertificateChainKey =(       ""

0 个答案:

没有答案