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