Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web services 使用客户端证书的THTTPRIO SSL不';它不能正常工作_Web Services_Delphi_Ssl_Soap - Fatal编程技术网

Web services 使用客户端证书的THTTPRIO SSL不';它不能正常工作

Web services 使用客户端证书的THTTPRIO SSL不';它不能正常工作,web-services,delphi,ssl,soap,Web Services,Delphi,Ssl,Soap,我有一个用DelphiXe2开发的SOAP Web服务器,它公开了一些方法,并使用SSL。我也在DelphiXe2中构建了我的客户机,并使用THTTPRIO连接到Web服务器。我的问题与THTTPRIO使用SSL certificatest有关。如果我调用我的Web服务,它在没有安装证书的情况下工作,但我认为它不应该 第二种情况:我安装了一个自签名证书,在调用我的Web服务后,它也可以工作 当我检查我的事件:HTTPRIOAfterExecute和httpriobeforexecute时,我将S

我有一个用DelphiXe2开发的SOAP Web服务器,它公开了一些方法,并使用SSL。我也在DelphiXe2中构建了我的客户机,并使用THTTPRIO连接到Web服务器。我的问题与THTTPRIO使用SSL certificatest有关。如果我调用我的Web服务,它在没有安装证书的情况下工作,但我认为它不应该

第二种情况:我安装了一个自签名证书,在调用我的Web服务后,它也可以工作

当我检查我的事件:HTTPRIOAfterExecute和httpriobeforexecute时,我将SoapRequest和SOAPResponse转换为来自TStream的字符串,似乎在这两种情况下都没有加密。我在另一个论坛上也发现了同样的问题,但没有回应

我用Delphi搜索了有关SOAP SSL客户端的信息,但找不到任何新信息。你们中有谁能就这个问题给我一些建议吗

如果我调用我的Web服务,它在没有证书的情况下工作 安装了,但我认为不应该

没有多少web服务需要客户端证书(银行和其他高风险环境除外)。更常见的情况是,客户端希望验证服务器标识,这是通过服务器证书完成的

所以我想说这个web服务确实以正常的、预期的方式工作


HTTPRIOAfterExecute和httpriobeforeeexecute,我转换了SoapRequest 和SOAPResponse从TStream返回字符串,但似乎不是 在这两种情况下都是加密的

这是正确的,消息负载将显示为未加密,因为SSL/TLS在传输层上进行加密。您的应用程序将看不到加密的数据,这实际上使事情变得更容易


您可以为消息负载添加加密,有用于此的通用库(但是我没有使用加密HTTPRio的经验)。

没有安装证书的情况下-您的意思是在客户端?客户端不需要安装服务器证书来访问HTTPS服务器,它们只需要链中更高级别的证书。您好,是的,我是说在客户端,我正在查看客户端证书。在服务器端,我使用tidserveriohandlerslopenssl从.crt文件加载我的服务器证书。我想除了银行和其他高风险环境之外,没有多少web服务需要客户端证书。更常见的情况是,客户端希望验证服务器身份,这是通过服务器证书完成的。好的,我理解这一点,但是如果我从php客户端调用我的Web服务,则需要客户端证书来进行调用,否则我无法进行该调用。我认为我的服务器应该始终请求客户端证书,以便接收和解决请求,但我不知道如何进行此设置。我已经阅读了更多关于SSL如何工作的内容,您的回答是正确的,我忘记了SSL在传输层而不是应用层上进行加密(关于这些事件中的加密数据,我的问题是一个愚蠢的问题)。我觉得奇怪的是,使用HTTPRIO,您需要安装客户端证书,然后传递客户端证书的序列号。最后,我将使用RemObjects SDK完成我的任务。非常感谢您提供的信息。