https://test.salesforce.comでSOAPサービスに接続する際に問題が発生しました。PHPのネイティブSoapClientに基づくToolkit-for-PHPv20.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の問題を抱えている人はいないようです。
誰かがこの問題をデバッグする方法の手がかりを持っていますか?
OK、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...]
これから何を作るのかよくわかりません...SalesForcetoolkit-for-phpはPHPのネイティブSoapClientを使用しており、SSLv3を強制的に使用する方法がわかりません。