Progress 4GL:执行 HTTP 请求时出现 SSL 问题

问题描述 投票:0回答:1

我正在尝试使用 OpenEdge.Net.pl 通过 https 进行呼叫,并且收到下一条错误消息:

安全套接字层 (SSL) 故障。错误代码 17424:SSL 例程 (9318)

我已经阅读了一段时间,我遇到的问题与我指向的 URL 有多个子域有关,例如:

api.exampleurl.com、dev.exampleurl.com...

根据我所看到和测试的情况,使用 ClientLibraryBuilder 类中的 'ServerNameIndicator' 参数我可以解决这个问题。事实上,在我的本地安装中,版本 12+ 可以工作。问题是,在我需要实现此功能的服务器中,安装的版本是 11.7.4,从我所见,尽管文档说它是在 11.3+ 版本中实现的,但此参数不存在于那个版本,因为当检查我的代码时,它会用下一条消息警告我:

无法在“OpenEdge.Net.HTTP.Lib.ClientLibraryBuilder”类中找到元素“ServerNameIndicator”。 (12927)

我还尝试添加 sslVerifyHost(FALSE) 参数,但它似乎根本没有做任何事情。

USING Progress.Json.ObjectModel.*.
USING OpenEdge.Net.HTTP.*.
USING OpenEdge.Net.HTTP.Lib.*. 
USING OpenEdge.Net.URI.

DEFINE VARIABLE oPayload  AS JsonObject         NO-UNDO. 
DEFINE VARIABLE oURI      AS URI                NO-UNDO. 
DEFINE VARIABLE oRequest  AS IHttpRequest       NO-UNDO.
DEFINE VARIABLE oLib      AS IHttpClientLibrary NO-UNDO.
DEFINE VARIABLE oClient   AS IHttpClient        NO-UNDO.
DEFINE VARIABLE oResponse AS IHttpResponse      NO-UNDO.

oURI = NEW URI( 'https', 'api.exampleurl.com' ).
oURI:Path = '/custom/path'.

oPayload = NEW JsonObject().
oPayload:Add("data","example data").

oRequest = RequestBuilder:POST(oURI, oPayLoad):Request.

oLib = ClientLibraryBuilder:Build()
    :sslVerifyHost(NO)
    :ServerNameIndicator('api.exampleurl.com')
    :LIBRARY. 

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

oResponse = oClient:Execute( oRequest ).

如何绕过此错误? 有没有其他方法可以在不出现此问题的情况下执行对 URL 的请求?

提前致谢。

ssl openedge progress-4gl
1个回答
0
投票

https://community.progress.com/s/question/0D5Pb00001FvXqwKAF/problems-with-ssl-when-performing-http-request有一个答案。

TL;DR 是您应该确保安装了 OpenEdge.Net.pl 文件的正确版本。

© www.soinside.com 2019 - 2024. All rights reserved.