HTTPSのサーバへSOAP通信
受付中
回答 1
投稿
- 評価
- クリップ 0
- VIEW 3,534
require_once 'SOAP/Client.php';
$client = new SOAP_Client('https://soap/example.com/api?wsdl');
$param = array(
'Request' => array(
'abc' => 123,
'def' => 456,
),
);
$response = $client->ClientMethod($param);
var_dump($response);
上記プログラムを実行すると以下のエラーが表示されます。
object(SOAP_Fault)#4 (8) {
["error_message_prefix"]=>
string(0) ""
["mode"]=>
int(1)
["level"]=>
int(1024)
["code"]=>
string(4) "HTTP"
["message"]=>
string(165) "curl_exec error 60 SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed"
["userinfo"]=>
string(0) ""
["backtrace"]=>
array(9) {
[0]=>
array(7) {
["file"]=>
string(30) "/usr/share/pear/SOAP/Fault.php"
["line"]=>
int(64)
["function"]=>
string(10) "PEAR_Error"
["class"]=>
string(10) "PEAR_Error"
["object"]=>
*RECURSION*
["type"]=>
string(2) "->"
["args"]=>
array(5) {
[0]=>
string(165) "curl_exec error 60 SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed"
[1]=>
string(4) "HTTP"
[2]=>
NULL
[3]=>
NULL
[4]=>
string(0) ""
}
}
※省略
上記、soap.example.comのサーバ証明書にチェーンする証明書を設定する方法をご教授いただきたく質問致します。
以上、宜しくお願い致します。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
0
curl
でSSL3_GET_SERVER_CERTIFICATE
のエラーが出てますね。
証明書を更新すると直るかもしれません。(opensslのパッケージを更新する)
http://hogem.hatenablog.com/entry/20120705/1340284071
どうしても中間証明書が必要な場合は、SoapClient
のオプションで指定する必要があると思いますが、
詳しいドキュメントが探せませんでした。以下のドキュメントあたりを参照してください。
SoapClient::SoapClient
SSL コンテキストオプション
SOAP/Client.php
はsoapのラッパークラスですかね?
素のSoapClient
だと以下のようにして、SSLコンテキストオプションを指定できます。
例として、CAファイルを指定する場合を書きますが、これが中間証明書になるのかは分かりませんでした。
$cafile = '/path/to/cafile.pem'; //CAファイルの場所
$client = new SoapClient(
"https://soap.example.com/api?wsdl", // これがWSDLですよね?
[
"stream_context" => stream_context_create(
[
'ssl' => [
'cafile' => $cafile,
'capture_peer_cert' => true,
'capture_peer_cert_chain' => true
]
])
]
);
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.09%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる