Re: OpenSSL 3 HTTP client C++ example?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks for the answer - Ii found out that it has todo with the -static flag. My rationale was that I wanted to have openSSL statically compiled into my code, so its to be used easier in the transition period where OpenSSL3 is not yet rolled out in major distributions.

With dynamic linkage, it works like expected.
Thank you!



Am 2022-06-22 9:41, schrieb David von Oheimb:
Hi again Beni,

On Wed, 2022-06-22 at 08:29 +0200, Benedikt Hallinger wrote:

Hi David and thank you for your advice and example.

my pleasure.
I was about to send a slightly improved version of my example code
regarding the use of proxies and the expected content type - see
attached
and an extended sample invocation (of course, adapt "myproxy" as
needed):

https_proxy=myproxy ./http_client https://example.com && echo ok

I tried to compile it, run onto errors tough.

I just put the file into my openssl source tree, which is on commit:

commit 9e86b3815719d29f7bde2294403f97c42ce82a16 (HEAD,

origin/openssl-3.0)

I've just tried myself using that commit (and default configuration)
and as expected everything works fine.

$ gcc http_client.c -Iinclude -L. -lcrypto -lssl -o http_client

/usr/bin/ld: ./libssl.a(libssl-lib-ssl_cert.o): in function

`add_uris_recursive':

ssl_cert.c:(.text+0x116): undefined reference to `OSSL_STORE_open'

/usr/bin/ld: ssl_cert.c:(.text+0x134): undefined reference to

`OSSL_STORE_eof'

[...]

This issue is pretty surely unrelated to the example code itself
but most likely due to some general build issue you have, such as some
inconsistency with pre-installed OpenSSL versions.
Sorry that I do not have the time to provide further aid on such
general build issues.

 David

Am 2022-06-21 22:52, schrieb David von Oheimb:

Hallo Beni,

good that you ask.

Using the new HTTP client API with TLS (possibly via a proxy) indeed

is not easy so far.

I'm going to improve this by adding some high-level helper functions

and extending the docs.

A good starting point when looking for examples is, as usual, the

application code in apps/.

In this case, there is some pretty useful code in apps/lib/apps.c,

but it turns out that the adaptation of app_http_get_asn1() and

app_http_tls_cb()

for receiving plain text (rather than ASN.1 encoded data) from the

server

is not straightforward because OSSL_HTTP_get() may close the SSL
read

BIO prematurely.

Also the behavior of non-blocking BIOs makes things a little more

tricky than expected.

Meanwhile I got it working - see the example attached.

Example build and usage:

gcc http_client.c -Iinclude -L. -lcrypto -lssl -o http_client

./http_client https://httpbin.org/ && echo ok

Regards,

David

On 20.06.22 10:54, Benedikt Hallinger wrote:

Hi there,

I currently try to get my hands dirty with C++ and  the new HTTPs

client

introduced with OpenSSL 3.

However I struggle to get started. My goal is to open a https

secured

website and download its contents into a std::string for further

parsing.

Does someone on the list know of a small basic example?

I imagine that I'm not the first person implementing a HTTPs website

connector with OpenSSL 3.

Thank you for your support,

Beni



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux