ios 跳过对https 的验证(Error Domain=NSURLErrorDomain Code=-999)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios 跳过对https 的验证(Error Domain=NSURLErrorDomain Code=-999)相关的知识,希望对你有一定的参考价值。

参考技术A AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];// allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO// 如果是需要验证自建证书,需要设置为YESsecurityPolicy.allowInvalidCertificates =YES;    [securityPolicy setValidatesDomainName:NO];    [manger setSecurityPolicy:securityPolicy];

Swift用Alamofire解决方案

public func defaultAlamofireManager() -> Manager letconfiguration = URLSessionConfiguration.default    configuration.httpAdditionalHeaders = Alamofire.SessionManager.defaultHTTPHeadersletpolicies: [String: ServerTrustPolicy] = ["api.domian.cn": .disableEvaluation    ]letmanager = Alamofire.SessionManager(configuration: configuration,serverTrustPolicyManager: ServerTrustPolicyManager(policies: policies))        manager.startRequestsImmediately =falsereturnmanager

如何使用 OpenEdge.Net 库跳过 HTTPS 连接上的 ssl 证书验证?

【中文标题】如何使用 OpenEdge.Net 库跳过 HTTPS 连接上的 ssl 证书验证?【英文标题】:How can I skip ssl certificate verification on HTTPS connection using the OpenEdge.Net Libraries? 【发布时间】:2019-06-12 07:57:04 【问题描述】:

我正在尝试使用 Openedge 对 API 端点进行 POST。 我已经安装了我请求的地方的 ssl 证书,但是 https 请求失败,告诉我找不到那个地方的 ssl 证书(在我的 /usr/dlc/certs 中)。

"_errors": [
    
        "_errorMsg": "ERROR condition: Secure Socket Layer (SSL) failure. error code -54:  unable to get local issuer certificate: for 85cf5865.0 in /usr/dlc/certs (9318) (7211)",
        "_errorNum": 9318
    
]

所以,我采取了不安全的请求,例如 curl 使用 --insecure 或 wget 使用“no-check-certificate”进行处理

我在 OpenEdge 11.6 上使用 OpenEdge.Net 库

creds = new Credentials('https://xxxx.com', 'usersname', 'password').
oPayload = NEW JsonObject().
oRequestBody = new String('CustomerReference=xxx&NoOfParcelsToAdd=2'). 

oRequest = RequestBuilder:Post('https://xxxxx.com/endpoint', oRequestBody)// Add credentials to the request 
        :UsingBasicAuthentication(creds) 
        :ContentType('application/x-www-form-urlencoded') 
        :AcceptJson() :Request.

    oResponse = ClientBuilder:Build():Client:Execute(oRequest).

我想知道,对于这个 OpenEdge.Net 库,我可以放置一个标签以跳过对证书的检查吗?

【问题讨论】:

所以再试一次,正确安装。你问错问题了。你不想让它变得不安全:你想让它安全地工作。 不,我不明白。解决方案是正确安装它,并停止寻找不安全的解决方法。你不想要这个。你想要一个正确的解决方案。如果您不希望它安全,请不要使用 SSL。 请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange 网络上发帖,您已在 CC BY-SA 3.0 license 下授予 Stack Exchange 分发该内容的不可撤销的权利(即无论您未来的选择如何)。根据 Stack Exchange 政策,帖子的非破坏版本是分发的版本。因此,任何破坏行为都将被撤销。如果您想了解更多关于删除帖子的信息,请参阅:How does deleting work? 请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Overflow 上发帖,您已根据CC BY-SA 3.0 license 授予 SO 分发该内容的不可撤销的权利。根据 SO 政策,任何破坏行为都将被撤销。如果您想了解更多关于删除帖子的信息,请在How does deleting work?了解更多信息 【参考方案1】:

我不知道任何跳过验证的选项,但我知道该错误的常见来源是您的证书颁发机构不在 $DLC/certs 中。证书颁发机构的默认列表相当狭窄。

【讨论】:

community.progress.com 上还有一个关于可能类似问题的相当最新的帖子:community.progress.com/community_groups/openedge_general/f/26/t/…【参考方案2】:
USING OpenEdge.Net.HTTP.IHttpClientLibrary.

USING OpenEdge.Net.HTTP.Lib.ClientLibraryBuilder. 
 
DEFINE VARIABLE oLib AS IHttpClientLibrary NO-UNDO. 

oLib = ClientLibraryBuilder:Build()
        :sslVerifyHost(NO)
        :Library.

oHttpClient = ClientBuilder:Build()
              :UsingLibrary(oLib)
              :Client.

【讨论】:

您能否提供一些信息,说明您的回答为何有帮助?只提供代码是没有信息的

以上是关于ios 跳过对https 的验证(Error Domain=NSURLErrorDomain Code=-999)的主要内容,如果未能解决你的问题,请参考以下文章

php Laravel Passport跳过对可信客户端的授权

编译器可以跳过对逗号运算符左操作数的评估吗?

java 调用WebService如何跳过安全证书验证的问题

httpclient跳过https请求的验证

如何从 JSF/ADF 验证器中获取旧值?

httpclient 3.1跳过https请求SSL的验证