Add OpenSSL 3 support
Fixes #21. Based on the first commit of #30.
The only actual breakage was the rename of SSL_get_peer_certificate to SSL_get1_peer_certificate.
I had spotted a new HTTP client in OpenSSL3, and tried to get that to work. Unfortunately, it's too limited for our purposes: it only supports GET and POST, and has no way to retrieve the status code or response headers.
Now if only I'd based it on the actual branch, I would've had the fix for that compile error too. I'm marking the PR as draft for now, let me know if you want it rebased on main, or on #30 (or main after that's merged).
I'll wait until #30 is safe to merge before merging this one. Thanks.
Feel free to rebase then open the PR.
I did notice the CI job only builds and tests with openssl 1.1, because it uses ubuntu 20.04.
I'm a little unsure about bumping CI to 22.04 because love 11's appimage is compiled with 20.04. Anyone have opinions?
Maybe we could run two linux jobs (20.04 versus 22.04) and label their artifacts appropriately. That might not be useful for very long though.
Since we're only runtime loading OpenSSL3, I wonder if it's good idea to clone OpenSSL source code locally then use the include for it? This would require more modification to lua-https CMake and we'll eventually need Ubuntu 22.04 for testing it anyway.
I'll merge this for now. Figuring out where to source the OpenSSL header can be done later (or by simply updating lua-https runners).