OpenSSL min and max proto version options #3317
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds two new options for ssl/tls streams to set min and max protocol version:
min_proto_version
- minimal protocol versionmax_proto_version
- maximal protocol versionThere are new stream constants that should be used as a value:
STREAM_CRYPTO_PROTO_SSLv3
STREAM_CRYPTO_PROTO_TLSv1_0
STREAM_CRYPTO_PROTO_TLSv1_1
STREAM_CRYPTO_PROTO_TLSv1_2
It is basically meant as a feature replacement for
crypto_method
that requires setting of all allowed protocols as a mask which means that the protocol holes were allowed. That is also changed in this PR as protocol holes should not be used which is explicitly stated in OpenSSL docs:https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_new.html (notes section)
It means that
crypto_method
will automatically fill missing protocols. For exampleSTREAM_CRYPTO_METHOD_TLSv1_0_SERVER | STREAM_CRYPTO_METHOD_TLSv1_2_SERVER
will also setSTREAM_CRYPTO_METHOD_TLSv1_1_SERVER
as can be seen in the changedstream_crypto_flags_003.phpt
test.