Coder Social home page Coder Social logo

Openssl support about cpr HOT 12 CLOSED

libcpr avatar libcpr commented on September 23, 2024 14
Openssl support

from cpr.

Comments (12)

tiwoc avatar tiwoc commented on September 23, 2024 6

On Windows and OS X, you can configure cURL to simply use the OS-provided TLS stacks (Secure Channel, Secure Transport), which has multiple upsides to shipping OpenSSL or one of its forks:

  • smaller binary size, because the library is already there
  • no need to maintain/update the list of trusted root certificates, which is not included in OpenSSL
  • no need to issue emergency patches of your app when the next security issue in the TLS library is found, because the OS vendor will do it

On Linux, you can feed the OS-provided trusted root certificates to cURL if you can find them. Here's where we look for them in Kullo:
https://github.com/kullo/client-httpclient-curl/blob/master/httpclient/cabundle.cpp

The CA bundle can then be fed to cURL using CURLOPT_CAINFO:
https://github.com/kullo/client-httpclient-curl/blob/master/httpclient/httpclientimpl.cpp#L137

from cpr.

EpiscopMoo avatar EpiscopMoo commented on September 23, 2024 6

Btw, couldn't find in the docs but there is a way to disable SSL checks without going down to libcurl calls.

cpr::Session session;
session.SetVerifySsl(false);
session.SetUrl(...);
auto response = session.Get();

Hope it helps someone!

from cpr.

ppetraki avatar ppetraki commented on September 23, 2024 1

What's the status of this? It looks like the CI has fallen behind. However the merge isn't all that big to begin with. What's holding this feature back from being merged into mainline?

from cpr.

webmaster128 avatar webmaster128 commented on September 23, 2024

Is this OpenSSL specific or are you talking about generic TLS support? I guess as user of curl, you should be able to abstract away from the TLS implementation used.

from cpr.

whoshuu avatar whoshuu commented on September 23, 2024

Yeah I should clarify that I want generic TLS support. The library client should probably not care what's used behind the scenes to do TLS, this is purely a build step detail.

That said, if I were to embed a particular TLS library, OpenSSL appears to be the way to go.

from cpr.

t-money-g avatar t-money-g commented on September 23, 2024

FYI for people just looking to get a quick and dirty requests over SSL should be able to do so by linking against libCURL (compiled with OpenSSL).
Just add it to your cmake lists and executable:
find_package(CURL)
include_directories(${CURL_INCLUDE_DIRS})
target_link_libraries(exe ${CURL_LIBRARY})

from cpr.

rwebber avatar rwebber commented on September 23, 2024

is it currently possible to make connections via Oauth?

from cpr.

dontsovcmc avatar dontsovcmc commented on September 23, 2024

There are some options for SSL:

Not check SSL:

curl_easy_setopt(curl_, CURLOPT_SSL_VERIFYPEER, false); 
curl_easy_setopt(curl_, CURLOPT_SSL_VERIFYHOST, false); 

Self-signed serfiticate:

curl_easy_setopt(curl_,CURLOPT_SSLCERTTYPE,"DER");
curl_easy_setopt(curl_,CURLOPT_CAINFO, path_to_cert_.c_str());
curl_easy_setopt(curl_, CURLOPT_SSL_VERIFYPEER, true);
curl_easy_setopt(curl_, CURLOPT_SSL_VERIFYHOST, false);  

Signed sertificate:
curl_easy_setopt(curl_, CURLOPT_CAINFO, "keys/curl-ca-bundle.crt");

I't good to use public web servers for unit tests.
For SSL it's good https://badssl.com/
Common requests: https://httpbin.org/

from cpr.

muggenhor avatar muggenhor commented on September 23, 2024

I't good to use public web servers for unit tests.

I disagree: you want unit tests to be able to run without any external dependencies. Integration tests are a different story though. But even those you probably want to run against a server which configuration you control (.e.g one you spawn as part of the test run).

from cpr.

jginesclavero avatar jginesclavero commented on September 23, 2024

Btw, couldn't find in the docs but there is a way to disable SSL checks without going down to libcurl calls.

cpr::Session session;
session.SetVerifySsl(false);
session.SetUrl(...);
auto response = session.Get();

Hope it helps someone!

Thank you so much! Simple and effective!

from cpr.

liyongping avatar liyongping commented on September 23, 2024

+1

from cpr.

TheMaverickProgrammer avatar TheMaverickProgrammer commented on September 23, 2024

+1

from cpr.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.