2014-12-10 3 views
-1

Puppet API에 액세스하기위한 PHP 스크립트를 얻으려고합니다. 나는 2 일 동안 검색을했는데 어떤 정보도 찾을 수 없다고 믿을 수 없다. (PHP 설치를위한 꼭두각시 모듈).PHP를 사용하여 Puppet API에 액세스하는 방법

저는 PHP와 컬을 사용하려하지만 어떤 종류의 응답이나 오류 또는 어떤 것도 얻을 수 없습니다. 여기에 꼭두각시 마스터에서 인증서를 얻을 내 (아주 기본) 시도는 다음과 같습니다

function get_data($url) { 

    $request_headers = array(); 
    $request_headers[] = 'Accept: s'; 

    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    return $data; 
}  
    $response = get_data('https://<puppet master>:8140/production/certificate/ca'); 

내가 복제하려고 모든 내 서버에서 작동하는 컬 호출입니다 : 나는이

curl -k -H "Accept: s" https://<puppet master>:8140/production/certificate/ca 

아마도 뭔가 실종되었다는 느낌이 들지만, 나는 그것을 이해할 수 없다.

+0

그럼 ... PHP 스크립트에 'Accept : s' 헤더를 설정하지 않으시겠습니까? – Wrikken

+0

Doh, 나는 그것을 내 질문에 추가하는 것을 놓쳤습니다. 그 점을 지적 해 주셔서 감사합니다 (편집 됨). 아직 응답 데이터가 없습니다. – omeek

+0

OK, 다음 커맨드 라인에서 제외 :'CURLOPT_SSL_VERIFYPEER'을 false로 설정하십시오. 그래도 문제가 해결되지 않으면'curl_error ($ ch);'를 실행하여 실패한 이유를 확인하십시오. – Wrikken

답변

0

Wrikken과 Glen에게 감사의 말씀을 전합니다. curl_setopt 옵션을 올바르게 설정하면 예상대로 작동합니다.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE); 
curl_setopt($ch, CURLOPT_CAINFO, "/path/to/cacert.pem"); 
+1

연결에 사용 된 SSL 인증서를 확인하지 않고 API 요청에 대한 특정 man-in-the-middle 유형 공격에 취약해질 수 있습니다. 위의 방법을 사용하지 않고 가능한 해결책을 찾으려면 [이 답변] (http://stackoverflow.com/a/18972719/3147637)을 확인하십시오. – Glen

+0

글렌에게 감사드립니다. 적어도 제대로 작업 할 수있게 코드화 된 코드를 작성하는 작업을 계속할 것입니다. 너희들은 매우 도움이된다! 업데이트 : 글렌, 그 게시물은 매우 도움이되었고 이제는 제대로 작동하게되었습니다. 다시 한번, 감사합니다 (그리고 Wrikken)! – omeek

관련 문제