2017-10-23 1 views
0

내가 새로운 SoapClientPHP SoapClient, 인증서 연결 방법은 무엇입니까?

$this->soap = new \SoapClient($this->wdls // WDLS with coorect host 
, [ 
    'exceptions' => 0, 
    'trace' => TRUE, 
    'local_cert' => $this->local_cert, // PEM file 
    'passphrase' => $this->passphrase, // password for PEM 
    'authentication' => SOAP_AUTHENTICATION_DIGEST, 
    'ssl_method' => SOAP_SSL_METHOD_SSLv2, 
    'cache_wsdl' => WSDL_CACHE_NONE, 
    ]); 
$this->soap->getInfo([...]); 

을 만들 수 있지만 오류가 발생합니다 : 나는 파이어 폭스를 사용하여 연결을 테스트

호스트에 연결할 수 없습니다, 나는 연결할 수 있었다. 무엇이 문제 일 수 있겠습니까?

답변

0

시작 - 서버의 닫힌 포트입니다. 그래서 원격 서버에 연결할 수 없었습니다. TLS 1.2에 문제가 있었지만 내장 SOAP 클라이언트가 구성을 허용하지 않았기 때문에 수동으로 프로토콜 버전을 지정하는 데 도움이되었습니다.

$this->soap = new \SoapClient($this->wdls, [ 
    'exceptions' => 1, 
    'trace' => TRUE, 
    'local_cert' => $this->local_cert, 
    'passphrase' => $this->passphrase, 
    //'ssl_method' => SOAP_SSL_METHOD_SSLv2, // not work! 
    'authentication' => SOAP_AUTHENTICATION_DIGEST, 
    "soap_version" => SOAP_1_2, 
    'cache_wsdl' => WSDL_CACHE_NONE, 
    'stream_context' => stream_context_create([ 
     'ssl' => [ 
      'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT, // it's work! 
     ] 
    ]), 
]);