PHP 에서 GuzzleHttp 나 libcurl 등을 사용시 HTTPS 인증서가 잘못 설정되어 있으면 위의 에러를 만나게 됩니다.


처리 방법은 신뢰하는 CA 인증서 목록 파일을 갱신한 후에 이 파일을 사용하도록 Guzzle 이나 curl 에 설정하면 됩니다.


  1. https://curl.haxx.se/ca/cacert.pem 에서 인증서를 다운받습니다.

    curl -k -O https://curl.haxx.se/ca/cacert.pem
    CODE
  2. curl -v 옵션으로 에러가 나는 사이트에 연결해 본 후에 CA 인증서 목록 파일의 위치를 확인(CAFile 항목)한 후에 예전 파일은 백업하고 다운받은 인증서 파일을 덮어씁니다.

    curl -v -L google.com
    CODE


  3. PHP 에서 curl 이나 Guzzle 사용시 php.ini 에 다음 내용을 추가하고 PHP FPM 이나 apache httpd 를 재구동합니다.

    [curl] 
    curl.cainfo = d:/devel/cacert.pem
    CODE

RHEL 이나 CentOS 의 경우 /etc/pki/tls/certs/ca-bundle.crt 를 기본적으로 찾으므로 예전 파일을 백업하고 여기에 덮어 쓰면 됩니다.


mv /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-bundle.crt.org

curl -k -o /etc/pki/tls/certs/ca-bundle.crt https://curl.haxx.se/ca/cacert.pem 
CODE

PHP 를 php-fpm 이나 apache httpd 에서 사용시 fpm 이나 apache 의 재구동이 필요할 수 있습니다.

같이 보기