복붙노트

PHP - SSL 인증서 오류 : 로컬 발급자 인증서를 가져올 수 없습니다.

PHP

PHP - SSL 인증서 오류 : 로컬 발급자 인증서를 가져올 수 없습니다.

Windows 7에서 PHP 버전 5.6.3을 XAMPP의 일부로 실행하고 있습니다.

Mandrill API를 사용하려고하면 다음 오류가 발생합니다.

StackOverflow에서 읽은 모든 것을 이미 시도했다. 다음을 php.ini 파일에 추가했다.

curl.cainfo = "C:\xampp\php\cacert.pem"

그리고 해당 위치로 다운로드 한 ccert.pem 파일은 http://curl.haxx.se/docs/caextract.html에서 다운로드 할 수 있습니다.

하지만 결국 XAMPP와 Apache 서버가 다시 시작되었지만 여전히 동일한 오류가 발생합니다.

나는 정말로 그 밖에 무엇을 시도해야할지 모른다.

아무도 내가 시도 할 수있는 다른 것에 대해 조언 할 수 있습니까?

해결법

  1. ==============================

    1.마침내 이것이 일하게했다!

    마침내 이것이 일하게했다!

  2. ==============================

    2.Mandrill.php 파일에서 $ this-> ch = curl_init ();라는 라인 번호 65 이후에 동일한 문제가 발생했습니다.

    Mandrill.php 파일에서 $ this-> ch = curl_init ();라는 라인 번호 65 이후에 동일한 문제가 발생했습니다.

    다음 두 줄을 추가하십시오.

    curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, 0);
    

    이게 내 문제를 해결하고 localhost를 사용하여 이메일을 보냈지 만 라이브 버전의 라이브에서는 사용하지 않는 것이 좋습니다. 라이브 서버에서 코드는이 코드없이 작동합니다.

  3. ==============================

    3.감사합니다 @Mladen Janjetovic,

    감사합니다 @Mladen Janjetovic,

    귀하의 제안은 ampps가 설치된 Mac에서 나를 위해 일했습니다.

    복사 됨 : http://curl.haxx.se/ca/cacert.pem

    받는 사람 : /Applications/AMPPS/extra/etc/openssl/certs/cacert.pem

    그리고 그 경로로 php.ini를 업데이트하고 아파치를 재시작했습니다 :

    [curl]
    ; A default value for the CURLOPT_CAINFO option. This is required to be an
    ; absolute path.
    curl.cainfo="/Applications/AMPPS/extra/etc/openssl/certs/cacert.pem"
    openssl.cafile="/Applications/AMPPS/extra/etc/openssl/certs/cacert.pem"
    

    그리고 Windows AMPPS 설치에서 동일한 설정을 적용하고 완벽하게 작동했습니다.

    [curl]
    ; A default value for the CURLOPT_CAINFO option. This is required to be an
    ; absolute path.
    curl.cainfo="C:/Ampps/php/extras/ssl/cacert.pem"
    openssl.cafile="C:/Ampps/php/extras/ssl/cacert.pem"
    

    : Wamp와 동일합니다.

    [curl]
    ; A default value for the CURLOPT_CAINFO option. This is required to be an
    ; absolute path.
    curl.cainfo="C:/wamp/bin/php/php5.6.16/extras/ssl/cacert.pem"
    openssl.cafile="C:/wamp/bin/php/php5.6.16/extras/ssl/cacert.pem"
    

    localhost 용 SAN을 사용하여 새 SSL 인증서를 생성하려는 경우이 게시물의 단계가 Centos 7 / Vagrant / Chrome Browser에서 저에게 효과적이었습니다.

  4. ==============================

    4.http://curl.haxx.se/docs/caextract.html 페이지를 보면 큰 글씨로 다음 섹션을 볼 수 있습니다.

    http://curl.haxx.se/docs/caextract.html 페이지를 보면 큰 글씨로 다음 섹션을 볼 수 있습니다.

    그것을 읽은 다음 'RSA-1024'인증서가 포함 된 인증서 버전을 다운로드하십시오. https://github.com/bagder/ca-bundle/blob/e9175fec5d0c4d42de24ed6d84a06d504d5e5a09/ca-bundle.crt

    그것들은 Mandrill과 함께 작동 할 것입니다.

    SSL을 비활성화하는 것은 나쁜 생각입니다.

  5. ==============================

    5.위의 단계는 도움이되었지만 Windows 8에서는 작동하지 않았습니다. 필자는 상호 관계를 알지 못하지만 아래 단계가 효과적이었습니다. 기본적으로 cacert.pem 파일의 변경. 희망이 사람을 도움이됩니다.

    위의 단계는 도움이되었지만 Windows 8에서는 작동하지 않았습니다. 필자는 상호 관계를 알지 못하지만 아래 단계가 효과적이었습니다. 기본적으로 cacert.pem 파일의 변경. 희망이 사람을 도움이됩니다.

  6. ==============================

    6.필자는 curl을 호출하는 데 필요한 인증없이 새로운 솔루션을 발견하여 두 개의 회선 코드 만 추가합니다.

    필자는 curl을 호출하는 데 필요한 인증없이 새로운 솔루션을 발견하여 두 개의 회선 코드 만 추가합니다.

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    
  7. ==============================

    7.서버 배포에 대한 위의 대답에 대해 자세히 설명합니다.

    서버 배포에 대한 위의 대답에 대해 자세히 설명합니다.

    $hostname = gethostname();
    if($hostname=="mydevpc")
    {
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    }
    

    배포 할 때 서버를 손상시키지 않으면 서 개발 환경에 대한 트릭을 수행해야합니다.

  8. ==============================

    8.php.ini에 접근 할 수 없다면, 다음 코드를 추가하십시오 ($ ch = curl_init (); 행 다음)

    php.ini에 접근 할 수 없다면, 다음 코드를 추가하십시오 ($ ch = curl_init (); 행 다음)

    $certificate_location = "C:\Program Files (x86)\EasyPHP-Devserver-16.1\ca-bundle.crt"; // modify this line accordingly (may need to be absolute)
    curl_setopt($ch, CURLOPT_CAINFO, $certificate_location);
    curl_setopt($ch, CURLOPT_CAPATH, $certificate_location);
    

    그런 다음 ca-bundle.crt를 다운로드하여 $ certificate_location에 지정한 위치에 저장하면됩니다.

  9. ==============================

    9.AppVeyor에서 앱을 빌드하는 동안 동일한 문제가 발생했습니다.

    AppVeyor에서 앱을 빌드하는 동안 동일한 문제가 발생했습니다.

  10. ==============================

    10.위의 해결 방법 중 아무 것도 작동하지 않는 경우 XAMPP 설치를 최신 버전으로 업데이트하십시오.

    위의 해결 방법 중 아무 것도 작동하지 않는 경우 XAMPP 설치를 최신 버전으로 업데이트하십시오.

    나는 PHP 5.5.11에서 XAMPP를 실행하고 있었고 동일한 정확한 코드가 작동하지 않았다. PHP 5.6.28로 XAMPP로 업그레이드했고 위의 솔루션이 효과가 있었다.

    또한 PHP를 업데이트하는 것만으로도 그 버전의 XAMPP에서 아파치와 PHP 설정의 조합처럼 보이지 않습니다.

    누군가가 도움이되기를 바랍니다.

  11. ==============================

    11.아시다시피 xampp 자체에서 이미 소스를 제공하고 있습니다.이 튜토리얼을보고 수행하십시오.

    아시다시피 xampp 자체에서 이미 소스를 제공하고 있습니다.이 튜토리얼을보고 수행하십시오.

  12. from https://stackoverflow.com/questions/28858351/php-ssl-certificate-error-unable-to-get-local-issuer-certificate by cc-by-sa and MIT license