2011-01-11 2 views
11

최근 SSL 인증서가 업데이트 된 서버에 데이터를 게시 할 때 문제가 발생했습니다. 몇 가지 연구를했는데 CURLOPT_SSL_VERIFYPEER가 false로 설정되면 게시 날짜가 성공적으로 처리된다는 것을 알았습니다. 누군가가 CURLOPT_SSL_VERIFYPEER와 _VERIFYHOST 사이의 관계를 설명 할 수 있습니까? 또한 VERIFYPEER를 false로 설정하면 더 이상 보안 연결을 통해 데이터를 전송하지 않습니까?CURLOPT_SSL_VERIFYPEER가 false이면 데이터 전송이 더 이상 안전하지 않습니까?

누군가에게 제공 할 수있는 도움에 감사드립니다.

답변

19

연결은 여전히 ​​SSL로 암호화됩니다. 올바른 것으로 확인 된 인증서를 사용하는 링크에서는이 작업을 수행하지 않습니다. 누구나 자신의 브라우저와 웹 서버가 지원하는 수준에서 완벽하게 수용 가능한 암호화를 수행하는 SSL 인증서를 만들 수 있습니다.

그러나 인증서의 진위 여부를 확인할 수 없다는 불만이 많습니다. 이것은 Joe M. Alicious가 "microsoft.com"이라고 주장하는 인증서를 만들고 자신의 Windows Update 호스트를 설정하지 못하도록하기위한 것입니다. cert는 microsoft.com이라고 말하지만 Verisign (또는 누구든지)이 실제로 해당 cert를 발급하지 않았고 자신의 인증서 (인증서에 서명 함)를 게시하지 않았으므로 실제로 microsoft.com 인 것으로 인증 될 수 없습니다.

_VERIFYHOST는 연결하려는 URL의 호스트 이름 (예 : 'microsoft.com')이 SSL 인증서에 나열되어 있는지 확인합니다. 이 옵션을 false로 설정하면 url/cert 호스트 이름 불일치가 무시됩니다 (예 : testbox.develhost.com에 개발 상자가 있지만 클라이언트의 실제 유효한 'example.com'인증서 사용).

_VERIFYPEER는 전체 인증서의 유효성을 검사하지 않습니다. 이를 통해 자체 서명 된 인증서가 작동 할 수 있습니다. 그렇지 않으면 SSL 라이브러리가 cert의 발급자가 유효하지 않다는 것을 표시합니다.

두 설정에 관계없이 연결을 강제하면 SSL로 암호화됩니다.

+0

우수합니다. 간결한 답변을 주셔서 감사합니다. –

+1

하지만 [개인 서버에 액세스하지 않는 한 끄지 마십시오!] (http://snippets.webaware.com.au/howto/stop-turning-off-curlopt_ssl_verifypeer-and-fix-your-php -config /) – webaware

1

나는 내 테스트에서 _VERIFYHOST와 _VERIFYPEER 사이의 관계에 대해 명확히하고 싶습니다.

_VERIFYHOST 옵션 1 또는 2에 의존하는 수동으로 공통 이름 (CN)을 확인하십시오.이 확인은 오류 메시지 대/소문자 만 확인하고 생성합니다. 확인 자체는 연결에 전혀 영향을주지 않으며 심지어 확인 오류가 발생합니다. _VERIFYPEER가 연결을 끊거나 계속하기 위해 사용하는 결과입니다.

_VERIFYPEER (1) 2 가지를 확인하십시오. 먼저, CAINFO로 인증서를 검사합니다. curl 옵션에 CAINFO를 지정하면 해당 값으로 검사하고, 그렇지 않으면 php.ini에 지정된 값으로 검사합니다. 두 번째로, _VERIFYHOST (_VERIFYHOST가 1 또는 2로 설정된 경우)의 결과를 확인합니다. 확인이 두 조건을 모두 통과하면 연결이 계속됩니다. 그렇지 않으면 연결이 끊어집니다.

0

CURLOPT_SSL_VERIFYPEER를 사용하지 않으면 인증서 검증이 수행되지 않고 CURLOPT_SSL_VERIFYHOST 값이 무시됩니다. 결과적으로 이것은 중간자 공격에 대해 불안감을줍니다. 즉, 더 이상 보안 연결을 통해 데이터를 전송하지 않습니다.

예, 데이터는 암호화되어 있지만 안전하지는 않습니다. 사람에게 보내는 것을 알고 있지만 누가 어떤 사람인지는 알지 못합니다. 사용자의 아치 적에게 그것을 보낼 수 있습니다 (공격자가 아닌 다른 사람이 데이터를 읽을 수 없도록 신중하게 암호화 함). 이것은 나쁘다. 세계의 모든 암호화는 공격자의 공개 키를 사용하여 암호화하는 경우별로 좋지 않습니다.

결론 : CURLOPT_SSL_VERIFYPEER를 비활성화하지 마십시오. 그것은 당신을 불안하게 만듭니다.

cURL의 SSL 지원을 안전하게 사용하기 위해 수행해야 할 작업에 대한 자세한 내용은 Security consequences of disabling CURLOPT_SSL_VERIFYHOST (libcurl/openssl)을 참조하십시오.

관련 문제