gpt4 book ai didi

Delphi Soap 请求程序 - 访问 TLS1.1/TLS1.2 时出现问题

转载 作者:行者123 更新时间:2023-12-02 02:10:47 27 4
gpt4 key购买 nike

我已经向 Embacadero 技术支持提出了这个问题,并在那里提出了一个案例,但也想知道这里是否有人知道这个问题的答案。

我在一家零售公司工作,并使用 Delphi 编写了他们的邮购程序。

该程序严重依赖的一件事是处理信用卡数据。从第一天起,这从来就不是一个大问题。我们的网关提供商是英国的 Verifone,到目前为止,我一直使用 SOAP 请求程序与 Verifone 处理服务器进行通信。我在使用此功能时没有遇到太多问题,并且从那时起它就一直有效。不过,我并不自称是 SOAP 调用等方面的专家。由于组件遗留原因,该软件仍然驻留在 D2007 中,这样就很好。我仍然可以根据需要开发它。

到现在为止......

昨天我收到了一封来自 Verifone 的电子邮件,内容如下:

“2016 年 10 月 4 日星期二,Verifone 将进行以下更改:1. 将安全证书从 SHA-1 升级为更安全的 SHA-256 算法。
2. 取消对 SSL v3 和 TLS v1.0 的支持。”

他们提供了此页面的链接:

http://www.verifone.co.uk/support/ssl

首先,我并没有过度担心,我们过去也进行过一些类似的更改(尽管主要是证书更改),但这并没有影响我们。但我读得越多,就越感到有点担心。

所以我决定最好进行一些测试。在第二个选项卡的该页面上,有一些测试 URL。我将现有的测试 URL(我们用于在系统上进行训练的测试 URL)替换为新的测试 URL,然后……失败了。我收到错误:

“无法与服务器建立连接 - URL:http://xml-cst.cxmlpg.com/gateway/gateway.asmx - SOAPAction:https://www.commidea.webservices.com/GetServerStatus

或类似于此屏幕截图,它是实际测试信用卡检查而不是服务器状态检查:

enter image description here

这只是执行一个简单的“GetServerStatus”调用,不需要帐户或凭据。我知道服务器正在 Chrome 中使用此 URL:

https://xml-cst.cxmlpg.com/gateway/gateway.asmx?op=GetServerStatus

我开始怀疑这是否是 D2007 中 SOAP 调用的组件中的问题。

所以昨晚我在西雅图的家里尝试了一下。我的想法是,如果我至少可以让它在那里运行,那么我可以在西雅图编写一个小实用程序,与 D2007 邮购套件一起放置,以处理信用卡。我从以下位置导入了 WSDL:

https://xml-cst.cxmlpg.com/gateway/gateway.asmx?wsdl

使用 WSDL 导入器并向表单添加一个按钮来调用 GetServerStatus 函数(与我在 D2007 中获得原始工作的方式相同):

procedure TForm1.Button1Click(Sender: TObject);

var
gs : GatewaySoap;

begin
gs := (HTTPRIO1 as GatewaySoap);
gs.GetServerStatus
end;

我交叉手指并点击了按钮。

唉,我收到了与上面相同的错误消息。所以现在我认为这与 Delphi 版本完全无关。

这是一个非常可怕的问题,因为它基本上完全停止了邮购软件的自动化功能,而这是邮购软件的一部分。如果我不能让简单的 GetServerfStatus 工作,那么我就完全不知所措了。

有人知道这里发生了什么吗?我是否无法通过 SOAP 请求程序执行非 SSL/TLS1.0 操作?看起来必须是 TLS1.1/1.2。我该如何解决这个问题?我现在猜测,如果西雅图可以解决此问题,那么相同的解决方案可能适用于 D2007 中的现有邮购代码。

真的希望有人能帮我解决这个问题!昨晚我睡得很晚,尝试了不同的事情,但无法掌握它。从字面上看,这可能是我刚刚忽略的东西,一些简单的东西——这是我的希望。话又说回来,我怀疑这可能是更技术性的东西。

特雷弗

最佳答案

SOAP 服务器似乎正在为已发布的 WSDL 中的服务返回 http URL(而它们应该是 https)。如果您控制 SOAP 服务器,则应该修复 WSDL 生成器。 (如果它是用 Delphi 编写的,则很可能只是在其 TWSDLHTMLPublish.PublishOptions 属性中缺少 poPublishLocationAsSecure 选项。客户端上的一个可能的解决方法可能是直接使用 (https) URL,而不依赖于已发布的 WSDL。

关于Delphi Soap 请求程序 - 访问 TLS1.1/TLS1.2 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38715870/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com