Program Tip

컬 오류 60, SSL 인증서 문제 : 인증서 체인의 자체 서명 된 인증서

programtip 2020. 12. 2. 21:47
반응형

컬 오류 60, SSL 인증서 문제 : 인증서 체인의 자체 서명 된 인증서


올바른 APP_ID, APP_SECRET 등을 사용하여 curl 요청을

  https://oauth.vk.com/access_token?client_id=APP_ID&client_secret=APP_SECRET&code=7a6fa4dff77a228eeda56603b8f53806c883f011c40b72630bb50df056f6479e52a&redirect_uri=REDIRECT_URI 

나는 그것으로부터 access_token을 얻어야하지만, FALSE를 얻고 curl_error()그렇지 않으면 다음 메시지를 인쇄한다 :

60: SSL certificate problem: self signed certificate in certificate chain

내 코드는 다음과 같습니다.

    // create curl resource
    $ch = curl_init();

    // set url
    curl_setopt($ch, CURLOPT_URL, $url);
    //return the transfer as a string
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    // $output contains the output string
    $output = curl_exec($ch);
    if ( ! $output) {
        print curl_errno($ch) .': '. curl_error($ch);
    }

    // close curl resource to free up system resources
    curl_close($ch);

    return $output;

위의 링크로 수동 이동하면 access_token이 잘됩니다. 컬과 함께 작동하지 않는 이유는 무엇입니까? 도와주세요.


비활성화를 제안하는 답변 CURLOPT_SSL_VERIFYPEER은 허용되지 않아야합니다. 질문은 "왜 cURL에서 작동하지 않는지"이며 Martijn Hols가 올바르게 지적했듯이 위험합니다.

이 오류는 CA 루트 인증서의 최신 번들이 없기 때문에 발생했을 수 있습니다. 일반적으로 curl이 호스트의 SSL 인증서를 확인하는 데 사용하는 암호화 서명이있는 텍스트 파일입니다.

PHP 설치에 이러한 파일 중 하나가 있고 최신 파일인지 확인해야합니다 (그렇지 않으면 http://curl.haxx.se/docs/caextract.html에서 다운로드 하십시오 ).

그런 다음 php.ini에서 설정하십시오 .

curl.cainfo = <absolute_path_to> cacert.pem

런타임에 설정하는 경우 다음을 사용하십시오.

curl_setopt ($ch, CURLOPT_CAINFO, dirname(__FILE__)."/cacert.pem");

이 해결 방법은 위험 하고 바람직하지 :

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

SSL 피어 확인을 비활성화하는 것은 좋은 생각이 아닙니다. 그렇게하면 MITM 공격자에게 요청이 노출 될 수 있습니다.

실제로 최신 CA 루트 인증서 번들 만 있으면됩니다. 업데이트 된 설치는 다음과 같이 쉽습니다.

  1. cURL 웹 사이트cacert.pem 에서 최신 파일 다운로드
  2. php.ini 파일에 경로 설정 (예 : Windows) :

    curl.cainfo=c:\php\cacert.pem

그게 다야!

안전하고 안전하게 지내십시오.


안녕 얘들 아 : 매우 중요합니다! 이 문제는 며칠 동안 나를 미치게 만들었고 내 curl & openssl 설치에서 무슨 일이 벌어지고 있는지 알 수 없었습니다. 마침내 구식 인 중간 인증서 (제 경우에는 GoDaddy)라는 사실을 알게되었습니다. godaddy SSL 관리자 패널로 돌아가서 새 중간 인증서를 다운로드했는데 문제가 사라졌습니다.

여러분 중 일부에게는 이것이 문제라고 확신합니다.

분명히 GoDaddy는 보안 문제로 인해 어느 시점에서 중간 인증서를 변경했으며 이제 다음 경고를 표시합니다.

"다운로드 한 번들에 포함 된 새 SHA-2 중간 인증서를 사용해야합니다."

내가 미쳐 가고 모든 서버의 문제를 정리했기 때문에 이것이 여러분 중 일부에게 도움이되기를 바랍니다.


If the SSL certificates are not properly installed in your system, you may get this error:

cURL error 60: SSL certificate problem: unable to get local issuer certificate.

You can solve this issue as follows:

Download a file with the updated list of certificates from https://curl.haxx.se/ca/cacert.pem

Move the downloaded cacert.pem file to some safe location in your system

Update your php.ini file and configure the path to that file:

참고URL : https://stackoverflow.com/questions/21187946/curl-error-60-ssl-certificate-issue-self-signed-certificate-in-certificate-cha

반응형