我在https://test.salesforce.com连接到SOAP服务时遇到一些问题。我使用基于PHP的本机SoapClient的Toolkit-for-PHP v20.0(https://github.com/developerforce/Force.com-Toolkit-for-PHP)。
软件:
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。
答案 0 :(得分:3)
这是最新版本的macports的openssl 1.0.1端口的已知错误:
http://trac.macports.org/ticket/33715
可能的解决方案:安装较旧的openssl版本,在本例中为openssl 1.0.0h:
cd /opt/local/src
sudo svn checkout -r 90715 http://svn.macports.org/repository/macports/trunk/dports/devel/openssl
cd openssl
sudo port install
取自: