-
- // CA-Dir
- string certdir = _config->Find("Acquire::https::CaPath","");
- if(certdir != "")
- curl_easy_setopt(curl, CURLOPT_CAPATH, certdir.c_str());
-
- // Server-verify
- int verify = _config->FindI("Acquire::https::Verify-Host",2);
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, verify);
+
+ // ... and associated key.
+ string key = _config->Find("Acquire::https::SslKey","");
+ knob = "Acquire::https::"+remotehost+"::SslKey";
+ key = _config->Find(knob.c_str(),key.c_str());
+ if(key != "")
+ curl_easy_setopt(curl, CURLOPT_SSLKEY, key.c_str());
+
+ // Allow forcing SSL version to SSLv3 or TLSv1 (SSLv2 is not
+ // supported by GnuTLS).
+ long final_version = CURL_SSLVERSION_DEFAULT;
+ string sslversion = _config->Find("Acquire::https::SslForceVersion","");
+ knob = "Acquire::https::"+remotehost+"::SslForceVersion";
+ sslversion = _config->Find(knob.c_str(),sslversion.c_str());
+ if(sslversion == "TLSv1")
+ final_version = CURL_SSLVERSION_TLSv1;
+ else if(sslversion == "SSLv3")
+ final_version = CURL_SSLVERSION_SSLv3;
+ curl_easy_setopt(curl, CURLOPT_SSLVERSION, final_version);