【发布时间】:2012-08-02 09:48:31
【问题描述】:
我在连接到https://test.salesforce.com 的 SOAP 服务时遇到了一些问题。我使用基于 PHP 原生 SoapClient 的 Toolkit-for-PHP v20.0 (https://github.com/developerforce/Force.com-Toolkit-for-PHP)。
软件:
- MacOS 10.8
- Macports 2.1.2
- PHP 5.3.15
- OpenSSL 1.0.1_c
30 秒后我收到的唯一错误消息(超时?)是:
[SoapFault]
Could not connect to host
奇怪的是,连接到 http://test.salesforce.com(不使用 SSL)或连接到 https://login.salesforce.com(使用 SSL)可以正常工作。
我什至设法使用soapUI登录https://test.salesforce.com。
所以我猜肯定存在一些认证/握手问题,但我不知道如何获得更详细的错误消息或如何更改有关工具包设置的任何内容。 我搜索了 google、stackoverflow 和 SalesForce 讨论板,但似乎没有人遇到这个特定的沙盒+SSL 问题。
有人知道如何调试这个问题吗?
好的,我认为这是 macports 的 openssl 二进制文件的问题。显然,握手失败是因为我的客户端正在尝试服务器不理解的 SSLv2/SSLv3 握手。
openssl s_client -connect test.salesforce.com:443 -state
CONNECTED(00000003)
SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
[...end...]
与强制 SSLv3 相同的命令:
openssl s_client -ssl3 -connect test.salesforce.com:443 -state
CONNECTED(00000003)
SSL_connect:before/connect initialization
SSL_connect:SSLv3 write client hello A
SSL_connect:SSLv3 read server hello A
depth=1 O = VeriSign Trust Network, OU = "VeriSign, Inc.", OU = VeriSign International Server CA - Class 3, OU = www.verisign.com/CPS Incorp.by Ref. LIABILITY LTD.(c)97 VeriSign
verify error:num=20:unable to get local issuer certificate
verify return:0
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 write client key exchange A
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL_connect:SSLv3 read finished A
[...and so forth...]
不太确定该怎么做……SalesForce toolkit-for-php 使用 PHP 的原生 SoapClient,我不知道如何强制它使用 SSLv3。
【问题讨论】:
标签: php soap ssl openssl macports