資格情報を使用してFTPにアクセスしようとしています。C++とCurl:ハンドシェイクの受信に失敗しました。さらにデータが必要です
私はカールを使用したことがなく、私が何をしているのかについては限られた理解しか持たず、多くの機能を研究しました。私はかつてCでFTPクライアントとサーバーを開発しましたが、それはUNIXだけで、かつてのことでしたので、ほとんど私にとってカールの問題です(これはクロスプラットフォームでなければなりません。
これまでのコード(ヘッダーファイルは含まれていませんが、私は本当にそれが必要であるとは疑いがありますが、明白な理由でパスワードとログインが隠されています。 。彼らは
bool FTPClient::DownloadFile()
{
CURL *curl;
CURLcode res;
char buffer[CURL_ERROR_SIZE + 1] = {};
struct FtpFile ftpfile =
{
"test",
NULL
};
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if (curl)
{
curl_easy_setopt(curl, CURLOPT_URL,
"https://[login]:[password]@lifesanctuary.eu/Update");
curl_easy_setopt(curl, CURLOPT_PORT, 21);
curl_easy_setopt(curl, CURLOPT_SSL_CIPHER_LIST, "TLSv1");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftpfile);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, buffer);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
if (CURLE_OK != res)
{
//ERREUR
fprintf(stderr, "erreur CURL %d:\n%s\n", res, buffer);
curl_global_cleanup();
return false;
}
}
if (ftpfile.stream)
fclose(ftpfile.stream);
curl_global_cleanup();
return true;
}
)filezillaの中でテストされ、動作し出力:
* Trying 91.121.145.87...
* TCP_NODELAY set
* Connected to lifesanctuary.eu (91.121.145.87) port 21 (#0)
* schannel: SSL/TLS connection with lifesanctuary.eu port 21 (step 1/3)
* schannel: checking server certificate revocation
* schannel: sending initial handshake data: sending 185 bytes...
* schannel: sent initial handshake data: sent 185 bytes
* schannel: SSL/TLS connection with lifesanctuary.eu port 21 (step 2/3)
* schannel: failed to receive handshake, need more data
* schannel: SSL/TLS connection with lifesanctuary.eu port 21 (step 2/3)
* schannel: encrypted data got 53
* schannel: encrypted data buffer: offset 53 length 4096
* schannel: next InitializeSecurityContext failed: SEC_E_INVALID_TOKEN (0x80090308) - Le jeton fourni Ó la fonction nÆest pas valide
* Closing connection 0
* schannel: shutting down SSL/TLS connection with lifesanctuary.eu port 21
* schannel: clear security context handle
erreur CURL 35:
schannel: next InitializeSecurityContext failed: SEC_E_INVALID_TOKEN (0x80090308) - Le jeton fourni Ó la fonction nÆest pas valide
私は問題が何であるか分かりません。私はリードを持って、ちょっと捜索して、私が無関係なものを見つけた、あるいは私が単に理解しなかったという結論に達しました。
SSL/TLS - 私はそのドメインではあまり知識がありません。サーバを設定した人はTLSを使用していると言いました。その理由はなぜですか?
curl_easy_setopt(curl, CURLOPT_SSL_CIPHER_LIST, "TLSv1");
しかし、それ以外にどのようにしたらいいのかわかりませんでした。「TLSv1」が自分の状況に合った唯一のパラメータだと思われます。私はそれが問題かもしれないと思う。
また、証明書に関連する可能性がある別の問題も考えられます。なぜ私は完全にはわかりませんが、証明書に関連するものは何も処理していないと確信しています。私はfilezillaで私のFTPにログインするときに私がそれを受け入れることを知っているが、ここで私は明らかにしない。
何が起こっているのですか?証明書の問題?暗号化の問題?多分何か全く違う?前もって感謝します。
EDIT: - 私はそれがこのエラーコードので、暗号化の問題である可能性があり検討しています - 私は私の知識には、何もHTTPSが1つを必要とし、私はその点では何も処理しない、 ので、それは、証明書の問題であると仮定していますほとんどがそれによって引き起こされるようです - 私は確かにそれが非常によく何か他のものかもしれません!