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

时间:2019-06-12 07:57:04

标签: http ssl openedge insecure-connection

我正在尝试使用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库,我可以放置一个标签以跳过证书检查吗?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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.