xml-rpc 라이브러리를 사용하여 C++에서 CGI 스크립트를 실행하고 있습니다. 서버 코드는 Apache가 실행할/var/www/cgi-bin/디렉토리에 있습니다. 또한 Apache는 cgi를 실행하는 권한을 허용하도록 구성됩니다. 이제 문제는 내 시스템의 Apache가 클라이언트를 실행하여이 주소에 액세스 할 때 자체 서명 인증서가 있다는 것입니다. "https : // localhost/cgi-bin/xmlrpcserver"C++에서 자체 서명 된 인증서의 "인증서 확인"을 무시하십시오.
이 오류가 발생합니다. : 클라이언트 던져 오류 : XML을 서버로 전송할 수없고 XML 응답을 다시 가져올 수 없습니다. libcurl이 설명하는 HTTP POST 트랜잭션을 실행하지 못했습니다. SSL 인증서 문제, CA 인증서가 올바른지 확인하십시오. 세부 정보 : 오류 : 14090086 : SSL 루틴 : SSL3_GET_SERVER_CERTIFICATE : 인증서 확인에 실패했습니다.
당분간 인증서 확인을 거치지 않고 응용 프로그램을 테스트하고 테스트 할 수 있습니다. 인증서 확인을 무시하고 현재 자체 서명 인증서를 사용하려는 동안 SSL 연결 (전체 통신을 암호화)을 원합니다.
감사
감사합니다. 지금 뭔가 바뀌 었다고 생각합니다. 그것은 여전히 나에게 같은 오류를주는 동안 웹 페이지의 내용을 인쇄합니다. 내 코드에서 어딘가에서 '컬 (curl)'핸들을 사용해야합니까? 아니면 전체 응용 프로그램에만 적용되는 것입니까? –
문제를 이해합니다. 나는 당신이 libcurl을 직접 사용하고 있다고 생각했지만 사실이 아닙니다. xmlrpc_c 라이브러리는 서버 자체에 대한 HTTP 요청을 수행합니다. 귀하의 코드에서 조언을 삭제하십시오. 대신, 복잡한 클라이언트 http://xmlrpc-c.sourceforge.net/doc/libxmlrpc_client++.html#complex_client를 사용하고 xmlrpc_c :: clientXmlTransport_curl :: constrOpt(). no_ssl_verifyhost (true)와 함께 xmlrpc_c :: clientXmlTransport_curl을 사용하십시오. http://xmlrpc-c.sourceforge.net/doc/libxmlrpc_client++.html#class_curl –
코드는 다음과 같습니다. string const serverUrl ("https : // localhost/cgi-bin/xmlrpcserver"); 문자열 const methodName ("sample.add"); xmlrpc_c :: clientSimple myClient; xmlrpc_c :: 값 결과; myClient.call (serverUrl, methodName, "ii", & result, 5, 7); int const sum = xmlrpc_c :: value_int (result); cout << "RPC 결과 (5와 7의 합) :"<< sum << endl; –