1
我正在C++中使用xml-rpc庫運行CGI腳本。服務器代碼位於/ var/www/cgi-bin /目錄中,由Apache運行。 Apache也被配置爲允許運行cgi的權限。現在的問題是,由於阿帕奇我的系統上有一個自簽名的證書,當我運行的客戶端來訪問這個地址: 「https://開頭本地主機/ 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與xmlrpc_c :: clientXmlTransport_curl :: constrOpt()。no_ssl_verifyhost(true)。請參閱http://xmlrpc-c.sourceforge.net/doc/libxmlrpc_client++.html#class_curl –
代碼如下所示: string const serverUrl(「https:// localhost/cgi-bin/xmlrpcserver」); string const methodName(「sample.add」); xmlrpc_c :: clientSimple myClient; xmlrpc_c :: value result; myClient.call(serverUrl,methodName,「ii」,&result,5,7); int const sum = xmlrpc_c :: value_int(result); cout <<「RPC的結果(5和7之和):」<< sum << endl; –