컬 : SSL 인증서 문제, CA 인증서가 올바른지 확인하십시오.
2006 년 4 월 7 일
Curl로 보안 URL을 열면 다음 오류가 발생할 수 있습니다.
SSL 인증서 문제, CA 인증서가 올바른지 확인하십시오.
왜 오류가 발생했는지 그리고 어떻게해야하는지 설명하겠습니다.
오류를 제거하는 가장 쉬운 방법은 스크립트에 다음 두 줄을 추가하는 것입니다. 이 솔루션은 보안 위험을 초래합니다.
//WARNING: this would prevent curl from detecting a 'man in the middle' attack
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
이 두 매개 변수가 무엇을하는지 보자. 매뉴얼 인용.
CURLOPT_SSL_VERIFYHOST : 1-SSL 피어 인증서에 공통 이름이 있는지 확인하십시오. 2를 사용하여 공통 이름이 있는지 확인하고 제공된 호스트 이름과 일치하는지 확인하십시오.
CURLOPT_SSL_VERIFYPEER : CURL이 피어의 인증서 확인을 중지하려면 FALSE입니다. 확인할 다른 인증서는 CURLOPT_CAINFO 옵션으로 지정하거나 인증서 디렉토리는 CURLOPT_CAPATH 옵션으로 지정할 수 있습니다. CURLOPT_SSL_VERIFYPEER가 비활성화 된 경우 CURLOPT_SSL_VERIFYHOST도 TRUE 또는 FALSE 일 수 있습니다 (기본값은 2). CURLOPT_SSL_VERIFYHOST를 2 (기본값)로 설정하면 사용자에게 제공되는 인증서에 원격 리소스에 액세스하는 데 사용하는 URN과 일치하는 '공통 이름'이 있음을 보증합니다. 이것은 건전한 점검이지만 프로그램이 속지 않는다고 보장하지는 않습니다.
'중간자'를 입력하십시오
프로그램이 대신 다른 서버와 통신하도록 오도 될 수 있습니다. 이것은 dns 또는 arp 중독과 같은 여러 메커니즘을 통해 달성 될 수 있습니다 (이것은 다른 날의 이야기입니다). 침입자는 프로그램이 예상하는 동일한 'comon name'으로 인증서에 자체 서명 할 수도 있습니다. 의사 소통은 여전히 암호화되어 있지만 사기꾼에게 비밀을 알려줄 것입니다. 이런 종류의 공격을 '중간자'라고합니다
'중간에있는 남자'를 물리 치기
우리에게 제공되는 인증서가 실제에 적합한 지 확인해야합니다. 우리는 이것을 합리적인 * 신뢰하는 인증서와 비교함으로써이를 수행합니다.
Verisign, GeoTrust 등의 주요 CA 중 하나에서 발급 한 인증서로 원격 리소스를 보호하는 경우 http://curl.haxx.se/docs/caextract 에서 얻을 수있는 Mozilla의 CA 인증서 번들과 안전하게 비교할 수 있습니다
. .html
cacert.pem
서버 어딘가에 파일을 저장하고 스크립트에서 다음 옵션을 설정하십시오.
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt ($ch, CURLOPT_CAINFO, "pathto/cacert.pem");