使用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 =( ""