2011-02-28 6 views
0

벽에 머리를 때려서 누군가가 나를 위해 대답 할 수 있기를 바랍니다. LibCurl을 사용하여 HTTPS URL에 간단한 파일 게시를 수행합니다. 전반적으로, 그것은 작동하지만 게시물을받는 사이트에 접속하면 명백하게 문제가 해결되고 난 이해하지 못합니다.LibCurl HTTPS 자격 증명, 내부적으로 처리되는 시퀀스?

분명히, 나는 나의 요청을 준비 URL을 넣어, 사이트에 대한 사용자 및 암호를 제공합니다. 그런 다음 게시물에는 CURL_FORMADD가 포함됩니다 (다중 부분 양식을 통해 단일 파일 첨부를 추가하는 매개 변수 용).

은 내가 CURLOPT_SSL_VERIFYPEER 및 CURLOPT_SSL_VERIFYHOST 밖으로 작동 문제가 있었다 그리고 마지막으로는 다음과 같은 설정으로 일하고 있어요.

여기에 문제가 있습니다. 분명히 curl_easy_perform()을 발행하면 요청을 보내려고 시도하고 응답이 돌아와서 ... 인증서 정보를 보낸 다음 인증서 정보로 전체 패키지를 다시 제출합니다. 그리고 내가 보내는 서버에 의해 받아 들여집니다.

그래서 LibCurl에 모든 ... 사용자, 암호 및 인증서 자격 증명이 모두 맨 앞에 오도록 알려 주면 내가 보내는 서버가 첫 번째 요청을 거부하지 않고 이후의 자격 증명을 얻을 수 있습니다.

감사합니다.

---- 피드백을 통해 편집. 오이겐에서 언급 한 바와 같이 더으로 보면서

...

내가 다른 수치에서 "CURLOPT_SSL_VERIFYPEER"장애인했습니다하는 "중간자"에 거래를 열 수 있도록 수행하여 타협. 나는 그것을 원하지 않는다. 인증의 방법을 발견함으로써, BASIC, 그래서 연결을 발행하고 때, 나는 지금

curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 

함께 보내고, 그것은 CURLE_SSL_CONNECT_ERROR으로 돌아옵니다. 나는 sdterror를 얻기 위해 노력하고있어,하지만 난 수행 않는 한, 나는 DLL이 예외를 발생 얻을 그 순간 ... 통해

FILE *pLocalFile; 
if(fopen_s(&pLocalFile, "MyHTTPS.Log", "w")) 
    return -1; 

curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); 
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteFileCallback); 
curl_easy_setopt(curl, CURLOPT_STDERR, pLocalFile); 

충돌입니다. 따라서, 나는 '연결 실패가 무엇인지에 대해서도 알 수 있습니다. 제가 강력히 의심하는 것은 인증서입니다.

+0

사이트에서 어떤 종류의 인증을 사용합니까 (기본, NTLM, 쿠키가있는 사용자 지정 등)? 내가 묻는 이유는 libcurl이 서버가 지원하는 인증 방법을 먼저 알아 내려고 시도 할 수 있기 때문에 사용자/패스를 보내지 않고 간단한 요청 만하면 401 응답에서 사용할 수있는 것이 무엇인지 파악할 수 있습니다. SSL 부분이 상황을 다소 혼란스럽게 만들지 만 ... –

+0

@Eugen Constantin Dinca, 인증서 기반은 내가 아는 전부입니다. 아침에 내 상사와 확인해 보겠습니다. – DRapp

+0

@Eugen Constantin Dinca, 기본 인증이므로 지금 인증서 정보를 제공하고 있습니다. – DRapp

답변

0

당신이 쉽게의 해결을 위해 떨어져 일을 계속해야합니다. 당신이 어떤 SSL 관련 문제 나 오류를하지 않도록

먼저 당신은 당신의 SSL 연결/악수를 해결.

그런 다음 필요한 HTTP 인증 항목을 제공하고 기본 설정을했는지 확인하고 올바른 응답을 얻으려면 단일 HTTP 요청 만 수행하면됩니다 (실제로 서버가 원하는 것으로 가정).

"DLL로 인해 예외가 발생했습니다."세 번째 문제인 것으로 보이며 다른 것들과 독립적입니다. 왜 우리가 당신이하고있는 일에 대한 완전한 그림이없는 것처럼 그것을 얻는지를 말하기는 어렵습니다.