PHP CURL CURLOPT_SSL_VERIFYPEER 무시 됨


117

어떤 이유로 HTTPS와 함께 CURL을 사용할 수 없습니다. 컬 라이브러리 업그레이드를 실행할 때까지 모든 것이 잘 작동했습니다. 이제 CURL 요청을 수행하려고 할 때 다음 응답이 발생합니다. SSL CA 인증서에 문제 (경로? 액세스 권한?)

관련 문제에 대해 여기에 게시 된 제안에 따라 다음을 시도했습니다.

  • 호스트 및 피어에 대한 확인 비활성화

    curl_setopt($cHandler, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true);
  • http://curl.haxx.se/docs/caextract.htmlCURLOPT_SSL_VERIFYPEER 에서 다운로드 한 cacert.pem을 활성화 하고 가리 킵니다 .

    curl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true);  
    curl_setopt($cHandler, CURLOPT_CAINFO, getcwd() . "/positiveSSL.ca-bundle");
  • 또한 연결하려는 서버의 번들 CA 인증서로 제공된 positiveSSL.ca-bundle로 동일한 작업을 시도했습니다.

  • curl.cainfo=cacert.pem(동일한 디렉토리에있는 파일과 아파치로 액세스 할 수 있음)으로 PHP ini 설정을 편집합니다.

  • 이름 바꾸기 /etc/pki/nssdb/etc/pki/nssdb.old

불행히도 위의 어느 것도 내 문제를 해결할 수 없으며 SSL CA 인증서 (경로? 액세스 권한?) 메시지에 문제가 계속 발생합니다.

그리고 처음에는이 확인이 필요하지 않습니다 (보안 문제를 알고 있습니다).

아무도 다른 제안이 있습니까?

최신 정보

최신 라이브러리로 업데이트하고 전체 상자를 다시 시작한 후 내가하고 있던 아파치뿐만 아니라 이제 다시 작동하는 것 같습니다 !!!


1
업그레이드 된 Curl 라이브러리가 다른 SSL 스택 (아마도 GnuTLS 대 OpenSSL)에 대해 컴파일 되었습니까?
Bruno

나는 그렇게 생각하지 않을 것이다. 시스템은 Fedora 16이고 실제로 yum 업데이트의 경우였습니다. 가장 성가신 것은이 전체 유효성 검사가 필요하지 않거나 필요하지 않으며 단순히 비활성화 할 수없는 것 같습니다.
그렉

보안을 위해 HTTPS를 사용하려는 경우 항상이 유효성 검사 프로세스를 사용하는 것이 좋습니다.
브루노

나는 그것을 알고 있지만 여기에서의 사용 사례는 모두 약간 중복됩니다. 또한 curl을 최신 버전으로 업데이트하고 php를 5.4로 업데이트했습니다. 이제 오류 메시지가 사라졌지 만 curl에서도 내용을 얻지 못했습니다. :)
Greg

하, 이제 curl_errno 함수가 설명서에 따르면 CURLE_SSL_CACERT_BADFILE 상태 77을보고합니다.
그렉

답변:


240

문서에 따르면 호스트 또는 피어 인증서를 확인하려면 CURLOPT_CAINFO옵션으로 대체 인증서를 지정해야합니다. 그렇지 않으면 옵션으로 인증서 디렉토리를 지정할 수 있습니다 CURLOPT_CAPATH.

또한 봐 CURLOPT_SSL_VERIFYHOST:

  • 1은 SSL 피어 인증서에 공통 이름이 있는지 확인합니다.
  • 2 공통 이름의 존재를 확인하고 제공된 호스트 이름과 일치하는지 확인합니다.

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

5
SSL 확인을 끄면 어쨌든 SSL의 모든 보안이 제거됩니다. 대신 PHP 구성을 수정해야합니다.
Scopey

7
@Scopey이지만 때로는 자체 서명 된 인증서가있는 로컬 개발 환경에서 필요할 수 있습니다. 그래서 아마 (예를 들어, 그것은 비공개 환경에 아무런 의미가 없지만, 알림으로는 로그에 어떤 경고를하는 것이 더 낫다 SSL verification disabled)
이반 Borshchov

2

CentOS7 시스템에서 동일한 문제가 발생했습니다. 을 비활성화 VERIFYHOST VERIFYPEER해도 문제가 해결되지 않았으며 더 이상 cURL 오류가 발생하지 않았지만 응답은 여전히 ​​유효하지 않았습니다. 수행 wgetcURL을 또한 인증서 오류가 발생하고 있던 같은 링크를.

-> 우리의 해결책은 VPS를 재부팅하는 것이 었는데, 이로 인해 문제가 해결되었고 요청을 다시 완료 할 수있었습니다.

우리에게 이것은 메모리 손상 문제로 보였습니다. VPS를 재부팅하면 라이브러리가 다시 메모리에 다시로드되고 이제 작동합니다. 따라서 위의 솔루션 @clover이 작동하지 않으면 컴퓨터를 재부팅하십시오.


간헐적이지 않은지 확인하십시오. 페이팔 및 피어 확인에 문제가 있었는데 가끔 작동했지만 그렇지 않았습니다. 무작위로 보였습니다. cafile 경로를 명시 적으로 설정하고 문제가 해결 된 위치를 curl에 알립니다.
Neil Davis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.