質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SOAP

SOAP(Simple Object Access Protocol)はウェブサービス実装においての構造化された情報をやり取りするためのプロトコル規定です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

PEAR

PEAR (PHP Extension and Application Repository)はPHPで利用する事ができるライブラリです。

Q&A

1回答

6611閲覧

HTTPSのサーバへSOAP通信

Clementine

総合スコア157

SOAP

SOAP(Simple Object Access Protocol)はウェブサービス実装においての構造化された情報をやり取りするためのプロトコル規定です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

PEAR

PEAR (PHP Extension and Application Repository)はPHPで利用する事ができるライブラリです。

0グッド

0クリップ

投稿2017/06/01 07:14

php

1require_once 'SOAP/Client.php'; 2$client = new SOAP_Client('https://soap/example.com/api?wsdl'); 3$param = array( 4 'Request' => array( 5 'abc' => 123, 6 'def' => 456, 7 ), 8); 9$response = $client->ClientMethod($param); 10var_dump($response);

上記プログラムを実行すると以下のエラーが表示されます。

log

1object(SOAP_Fault)#4 (8) { 2 ["error_message_prefix"]=> 3 string(0) "" 4 ["mode"]=> 5 int(1) 6 ["level"]=> 7 int(1024) 8 ["code"]=> 9 string(4) "HTTP" 10 ["message"]=> 11 string(165) "curl_exec error 60 SSL certificate problem, verify that the CA cert is OK. Details: 12error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed" 13 ["userinfo"]=> 14 string(0) "" 15 ["backtrace"]=> 16 array(9) { 17 [0]=> 18 array(7) { 19 ["file"]=> 20 string(30) "/usr/share/pear/SOAP/Fault.php" 21 ["line"]=> 22 int(64) 23 ["function"]=> 24 string(10) "PEAR_Error" 25 ["class"]=> 26 string(10) "PEAR_Error" 27 ["object"]=> 28 *RECURSION* 29 ["type"]=> 30 string(2) "->" 31 ["args"]=> 32 array(5) { 33 [0]=> 34 string(165) "curl_exec error 60 SSL certificate problem, verify that the CA cert is OK. Details: 35error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed" 36 [1]=> 37 string(4) "HTTP" 38 [2]=> 39 NULL 40 [3]=> 41 NULL 42 [4]=> 43 string(0) "" 44 } 45 } 46※省略

上記、soap.example.comのサーバ証明書にチェーンする証明書を設定する方法をご教授いただきたく質問致します。

以上、宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

curlSSL3_GET_SERVER_CERTIFICATEのエラーが出てますね。
証明書を更新すると直るかもしれません。(opensslのパッケージを更新する)
http://hogem.hatenablog.com/entry/20120705/1340284071

どうしても中間証明書が必要な場合は、SoapClientのオプションで指定する必要があると思いますが、
詳しいドキュメントが探せませんでした。以下のドキュメントあたりを参照してください。
SoapClient::SoapClient
SSL コンテキストオプション

SOAP/Client.phpはsoapのラッパークラスですかね?
素のSoapClientだと以下のようにして、SSLコンテキストオプションを指定できます。
例として、CAファイルを指定する場合を書きますが、これが中間証明書になるのかは分かりませんでした。

php

1$cafile = '/path/to/cafile.pem'; //CAファイルの場所 2 3$client = new SoapClient( 4 "https://soap.example.com/api?wsdl", // これがWSDLですよね? 5 [ 6 "stream_context" => stream_context_create( 7 [ 8 'ssl' => [ 9 'cafile' => $cafile, 10 'capture_peer_cert' => true, 11 'capture_peer_cert_chain' => true 12 ] 13 ]) 14 ] 15);

投稿2017/06/01 09:06

shi_ue

総合スコア4437

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問