Hi Paul,

I may have accidentally killed that while refactoring the TLS backend IO 
handling. Sorry about that.

I think we need a test case for that edge case.

Kind Regards,
Stefan

> Am 27.01.2023 um 10:13 schrieb Paul Groke via curl-library 
> <curl-library@lists.haxx.se>:
> 
> Hi,
> 
> we noticed a change in behavior wrt. CURLOPT_SSL_VERIFYPEER and 
> CURLOPT_CAINFO_BLOB with libcurl 7.87.0.
> 
> Our application always sets CURLOPT_CAINFO_BLOB to a non-null value, because 
> we never want to use any built-in default/system default certificate bundle 
> path.
> If no CAs are configured for our software, we set CURLOPT_CAINFO_BLOB with a 
> non-null pointer to a `curl_blob`  struct, which has `len` set to zero (and 
> `data` pointing to a null byte).
> Additionally we set CURLOPT_SSL_VERIFYPEER to whatever our appliaction's 
> config requests.
> 
> We often have the case where CURLOPT_CAINFO_BLOB is set to "empty string" as 
> described above, and CURLOPT_SSL_VERIFYPEER is set to 0.
> 
> With previous libcurl versions, this used to work. Which to me makes sense. 
> We explicitly instruct libcurl to use an empty certificate list, but also 
> tell it to not verify certificates. So IMO there's no reason for a transfer 
> with such settings to fail because of a certificate-related error.
> 
> With 7.87.0, the behavior changed: the transfer now fails with error
> 
>> Problem with the SSL CA cert (path? access rights?).
> 
> We link libcurl statically and have tests that cover this combination, so at 
> least for us this didn't break any existing installations. For new versions, 
> we can work around it by changing our code to clear/reset CURLOPT_CAINFO_BLOB 
> by setting a null pointer in case our verify peer option is set to "false".
> 
> I still thought I should let you know, because this looks like an unintended 
> and also undesirable change to me. It could break applications with similar 
> usage of CURLOPT_CAINFO_BLOB + CURLOPT_SSL_VERIFYPEER, if they link libcurl 
> dynamically or don't have tests that cover this combination.
> 
> My guess is that this was caused by the new certificate caching code, but we 
> didn't verify this hypothesis.
> 
> Another thing that may be worth checking is setting CURLOPT_CAINFO or 
> CURLOPT_CAPATH to a non-existing path/"permission denied" path, while also 
> setting CURLOPT_SSL_VERIFYPEER=0. I wouldn't be surprised if this also 
> results in the same error. And if memory serves, this also used to work.
> 
> Best regards,
> Paul
> -- 
> Unsubscribe: https://lists.haxx.se/listinfo/curl-library
> Etiquette:   https://curl.se/mail/etiquette.html

-- 
Unsubscribe: https://lists.haxx.se/listinfo/curl-library
Etiquette:   https://curl.se/mail/etiquette.html

Reply via email to