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跳过对可信客户端的授权