Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support OpenSSL 1.1.0 and later #183

Open
rlebeau opened this issue Sep 1, 2017 · 12 comments · May be fixed by #299
Open

Support OpenSSL 1.1.0 and later #183

rlebeau opened this issue Sep 1, 2017 · 12 comments · May be fixed by #299
Assignees
Labels
Element: I/O Handlers Issues related to TIdIOHandler and descendants Element: SSL/TLS Issues related to SSL/TLS handling, TIdSSLIOHandlerSocketBase and descendants Status: In Progress Issue is being worked on Type: Enhancement Issue is proposing a new feature/enhancement

Comments

@rlebeau
Copy link
Member

rlebeau commented Sep 1, 2017

Indy currently supports OpenSSL up to 1.0.2. OpenSSL 1.1.0 makes a number of major API changes that break TIdSSLIOHandlerSocketOpenSSL. Removing/renaming functions, changing/obscuring structures, changing the DLL filenames, etc. Indy needs to either have TIdSSLIOHandlerSocketOpenSSL recognize 1.1.0+ and adjust itself accordingly, or else define a whole new IOHandler just for 1.1.0+.

Also, in order to support TLS 1.3, Indy needs to support OpenSSL 1.1.1+, as TLS 1.3 will NOT be added to OpenSSL 1.0.2 or 1.1.0.

The OpenSSL devs will stop supporting OpenSSL 1.0.2 on Dec 31 2019, and 1.1.0 on Sept 11 2019.

UPDATE: as of 07-Sep-2021, OpenSSL 3.0.0 has been released, which is largely backwards compatible with 1.1.x, but does make some additional API changes. Refer to https://www.openssl.org/docs/man3.0/man7/migration_guide.html

@rlebeau rlebeau added Type: Enhancement Issue is proposing a new feature/enhancement Element: I/O Handlers Issues related to TIdIOHandler and descendants Element: SSL/TLS Issues related to SSL/TLS handling, TIdSSLIOHandlerSocketBase and descendants labels Sep 1, 2017
@rlebeau rlebeau added this to the Indy 12 milestone Aug 14, 2018
@rlebeau rlebeau changed the title Support OpenSSL 1.1.0 Support OpenSSL 1.1.0 and later Sep 25, 2018
@winkelsdorf
Copy link

winkelsdorf commented Dec 5, 2019

@rlebeau Bringing this again to the team's attention. Afaik, Indy currently only supports the 1.0.2 branch which will be unsupported in a few weeks (by the end of this year).

Unfortunately I never found enough testers for my experimental 1.1.1 library builds and I am currently out of native windows development. I had a look at the current list on https://wiki.openssl.org/index.php/Binaries and saw that François Piette (ICS) started providing pre-compiled libraries too and already provides the 1.1.1 branch. Bintray releases seem solid too (build chain on https://github.com/curl/curl-for-win).

@rlebeau
Copy link
Member Author

rlebeau commented Dec 6, 2019

Work is in progress to support OpenSSL 1.1.x. I do not know at this time whether it will be ready by the deadline, though.

@jgv-Lisam
Copy link

@rlebeau Would be great if you could create a new branch for this support.

@rlebeau
Copy link
Member Author

rlebeau commented Dec 6, 2019

I have created an "OpenSSL-1.1.x" branch

@JPeterMugaas
Copy link

No, there has been too many setbacks in my life.

@rlebeau
Copy link
Member Author

rlebeau commented Dec 6, 2019

@JPeterMugaas you are not the only one working on it lately.

@mezen
Copy link
Contributor

mezen commented Mar 26, 2020

I created a fork (https://github.com/mezen/Indy/commits/NewOpenSSL) where a lot of progress is already done. A release-able version is not far away

@nag944
Copy link

nag944 commented Dec 1, 2020

I tried this code. Seems to be functional, but some strong problems with stability. Even at medium load, http server halts every several hours with exception "Failed to shutdown with result reason code 5".

@smeier1218
Copy link

What do I have to do to make INDY 10 on my Delphi 7 installed on windows 10 64Bit work with TLS 1.2 ?

@IndySockets IndySockets deleted a comment from ezurschmiede May 14, 2021
@rlebeau rlebeau linked a pull request May 14, 2021 that will close this issue
@rlebeau
Copy link
Member Author

rlebeau commented May 14, 2021

@smeier1218 Are you asking about the new OpenSSL 1.1.x IOHandler that is in progress? Or, are you just asking about Indy in general? What version of Indy are you actually using? Delphi 7 is very old, are you using the version of Indy that shipped with D7, or have you upgraded your Indy installation to a modern version? It is difficult to answer your question without knowing your situation.

@smeier1218
Copy link

smeier1218 commented May 14, 2021 via email

@rlebeau
Copy link
Member Author

rlebeau commented May 16, 2021

In that case, all you should need to do is assign a TIdSSLIOHandlerSocketOpenSSL component to the IOHandler property of a TCP connection, enable the sslvTLSv1_2 flag in the IOHandler's SSLOptions.SSLVersions property, and then deploy the OpenSSL 1.0.2 DLLs with your app. You can get the DLLs from this GitHub repo.

If you need to use OpenSSL 1.1.x, such as for TLS 1.3, then you need to download and use this IOHandler component instead.

@rlebeau rlebeau assigned mezen and unassigned JPeterMugaas Sep 7, 2021
@rlebeau rlebeau added the Status: In Progress Issue is being worked on label Apr 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Element: I/O Handlers Issues related to TIdIOHandler and descendants Element: SSL/TLS Issues related to SSL/TLS handling, TIdSSLIOHandlerSocketBase and descendants Status: In Progress Issue is being worked on Type: Enhancement Issue is proposing a new feature/enhancement
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants