2014-06-19 1 views
1

Zend Framework 2 용 모듈 응용 프로그램을 만들고있었습니다. 필요한 세부 정보가 포함 된 서버에 게시물 요청을 보내려고하면 "Unable TCP 연결 api.mysite.com에서 암호화 활성화 ". 이전에 "TCP 연결 api.mysite.com에서 암호화를 활성화 할 수 없습니다 :"sslcafile "또는"sslcapath "옵션이 해당 환경에 적합하게 설정되어 있는지 확인하십시오."라는 오류 메시지가 나타납니다.젠드의 TCP 연결 api.mysite.com에서 암호를 활성화 할 수 없습니다.

Google 검색에서 sslverifypeer를 false로 설정해야합니다. 이 작업을 수행 한 후 "TCP 연결 api.mysite.com에서 암호화를 활성화 할 수 없습니다."라는 문장의 첫 번째 부분이 남았습니다. 내가 잘못 될 수있는 곳을 알 수 없습니다. 이전 예외에서

, 나는 "() stream_socket_enable_crypto를이 스트림이 SSL/암호화를 지원하지 않습니다"얻을 : http://framework.zend.com/manual/2.3/en/modules/zend.http.client.html#connecting-to-ssl-urls

+0

동일한 문제가있어서 검색 할 때이 사실을 발견했습니다. 제 경우에는 ZendOAuth cURL 어댑터 매개 변수를 어떻게 든 설정해야합니다. [여기에 내가했던 방법] (http://stackoverflow.com/a/41408933/722036). –

답변

1

는 문서에 메모를 참조하십시오. 연결하려는 사이트에 유효한 SSL 인증서가없는 경우 sslverifypeer을 설정하면 안됩니다. 대신 오류가 제안하는대로 sslcapath을 설정하십시오. 이것은 PHP가 여러분이 연결하고있는 호스트가 제공 한 SSL 인증서의 유효성을 검사하는 방법을 제공합니다.

+0

안녕하세요! 그런데 어떻게해야할까요? 인증서는 어디에 저장되어 있습니까? – user2740957

+0

OS에 따라 다릅니다. '/ etc/ssl/certs'는 우분투에서는 맞지만, 다른 사람들에 대해서는 확실하지 않습니다. –

1

이것은 ssl 사용 사이트와 통신하려는 사이트 때문입니다. 기본 어댑터 Zend\Http\Client\Adapter\Socket을 사용하려면 PHP가 SSL 인증서의 유효성을 검사 할 수 있도록 sslcapath 구성 옵션을 정의해야합니다. 이 문제를 방지하기 위해 대신 컬 어댑터를 사용했습니다.

$client = new Client(); 
    $client->setUri($endPointUrl); 

    $options = array('put your options'); 

    $client->setOptions($options); 
    $client->setAdapter('Zend\Http\Client\Adapter\Curl'); 
    $response = $client->send(); 

문서 : http://framework.zend.com/manual/current/en/modules/zend.http.client.html 당신은 HTTP를 클라이언트 옵션을 설정해야합니다

0

. 여기

는 작업 설정입니다 :

// eko/FeedBundle and issue with ssl site -> https://github.com/eko/FeedBundle/issues/51 
    $httpClientOptions = array(
     'adapter' => 'Zend\Http\Client\Adapter\Socket', 
     'persistent' => false, 
     'sslverifypeer' => false, 
     'sslallowselfsigned' => true, 
     'sslusecontext' => true, 
     'ssl' => array(
      'verify_peer' => false, 
      'allow_self_signed' => true, 
      'capture_peer_cert' => true, 
     ), 
     'useragent' => 'Feed Reader', 
    ); 
    ZendFeedReader::setHttpClient(new ZendHttpClient(null, $httpClientOptions)); 

참고 : 여기에

// eko/FeedBundle and issue with ssl site -> https://github.com/eko/FeedBundle/issues/51 
    $httpClientOptions = array(
     'adapter' => 'Zend\Http\Client\Adapter\Socket', 
     'persistent' => false, 
     'sslverifypeer' => false, 
     'sslallowselfsigned' => false, 
     'sslusecontext' => false, 
     'ssl' => array(
      'verify_peer' => false, 
      'allow_self_signed' => true, 
      'capture_peer_cert' => true, 
     ), 
     'useragent' => 'Feed Reader', 
    ); 
    ZendFeedReader::setHttpClient(new ZendHttpClient(null, $httpClientOptions)); 

작동하지 설정은 내가 그렇게 본질적으로는 젠드 라이브러리를 사용 심포니 번들 에코/feedBundle에 문제가 너에게도 마찬가지다.

이 솔루션은 테스트를 거쳤으며 작동하는 것으로 입증되었습니다.

관련 문제