2017-05-03 14 views
11

PHPで暗号化されたSOAPリクエストを作成できません。ドキュメントごとに、私は各リクエストをペイメントゲートウェイに暗号化しました。私はCSR &を生成し、それを証明書の権限に送りました。彼らは私にドメイン証明書& CA証明書を送り返しました。最大の問題は、ドキュメンテーションがPHP用ではないということです。文書ごとのように:私はhelper class from Gitが見つかりましたが、私は次のエラーを取得する接続しようとするたびに、長い時間を検索した後PHPで各SOAPリクエストを暗号化する方法

The web service is protected with WS-Security Sign and encryption policy

一般的なセキュリティエラー(証明書が復号化のために見つかりませんでした(KEYID )

FaultCode : wsse:InvalidSecurity

次のように)私は、SSLヘッダを設定しようとした:

$contextOptions = array(
    'ssl' => array(
     'verify_peer' => false, 
     'verify_peer_name' => false, 
     'cafile'  => '../../certs/CA.cer', 
     'local_cert'  => '../../certs/server.cer', 
     'local_pk'  => '../../certs/private_key.key', 
     'verify_depth' => 0, 
     'allow_self_signed'=>true, 
    ) 
); 

$sslContext = stream_context_create($contextOptions); 

更新

私はとキーを定義した:

define('PRIVATE_KEY', 'server_prvate_key.key'); 
define('CERT_FILE', 'domain_cert.cer'); 
define('SERVICE_CERT', 'CA.cer'); 

この定義に何か問題(上記のGITのリンクを参照してください)?

+0

'cer' /' key'ファイル/パスは存在しますか?あなたはそれを見てみましたか?http://stackoverflow.com/questions/7147988/creating-a-php-soap-request-with-a-certificate –

+0

@GabrielHemingはい。ファイルが存在する – Shan

+0

あなたの鍵と証明書への完全なパスを定義する必要があります。そのヘルパークラスは、どのフォルダにあるのか推測しません。 – Capsule

答えて

6

カールを試してみましたか?

curl_setopt($ch,CURLOPT_CAINFO, 'CA.cer'); 
    curl_setopt($ch,CURLOPT_SSLCERT, 'domain_cert.cer'); 
    curl_setopt($ch,CURLOPT_SSLKEY, 'server_prvate_key.key'); 
    curl_setopt($ch,CURLOPT_SSLCERTPASSWD, 'certificate_password'); //if have 

私はカールを使用して支払いゲートウェイと他のサービスへの暗号化接続を使用して、魔法のように動作します:

はあなたの証明書を設定するには、次のオプションを使用します。

+0

私はカールを試みましたが、カールを実行した後で、例外をチェックした後で虚偽になってしまった:「wsse:InvalidSecurityMissing wsse:リクエストのセキュリティヘッダー」というセキュリティヘッダーの追加方法がわかりません!しばらく検索しました&私はsuernameとパスワードでいくつかのサンプルを見つけました – Shan

関連する問題