@danami,
@Lloyd_mcse
You guys have stumbled upon a problem or a major inconvenience of the http2_pref script: it does change the cipher suite.
Best way to resolve this is
- NOT: adding some cipher suite, found somewhere online (most of them are really not thought through)
- OK: run the pci_compliance_resolver utility from the command line, after running the http2_pref command
- EXCELLENT: create a
bespoke cipher suite, exactly satisfying the needs on your server, since (on the one hand) not all ciphers are required and (on the other hand) the best thing to do is to keep a
compact cipher suite, with explicit exclusion of specific ciphers.
Note the following (general) remarks:
a) it is logical and common behaviour that activation of the HTTP/2 protocol support will result in TLS versions lower than 1.2 not being supported,
b) the before mentioned
logic is primarily related to the OpenSSL version (and only secundary related to HTTP/2 support in Nginx), with
- Nginx support for HTTP/2 requiring the ALPN (Application-Layer Protocol Negotiation) TLS extension, which is only supported as of OpenSSL version 1.0.2 (latest stable version),
- OpenSSL version 1.0.2 (and/or the OS vendor compiled packages) primarily supporting TLS 1.2 with ALPN,
- lower TLS versions (read: TLS < 1.2) not leading to HTTP/2 based connections with the Nginx reverse proxy,
and the above simply implies that Nginx does not communicate via the HTTP/2 protocol, if the concerning client implementation is requiring lower TLS versions for the handshake process.
c) it is, at least from the perspective of security, not recommended to allow lower TLS versions in the case that HTTP/2 support is enabled, since that
- could force specific client implementations (read: modern mainstream browsers, amongst others) to use TLS < 1.2 (this scenario does not really happen often)
- would allow client implementations, requiring TLS < 1.2, connect to the Nginx reverse proxy, which is not a problem on itself, but does raise the question: why enable HTTP/2?
In short, it seems to be logical to disable ciphers for lower TLS versions, if HTTP/2 support is enabled.
The words "seems logical" are entirely correct, since in my humble opinion it is rather strange that activation of HTTP/2 protocol only has effect for some client implementations.
Regards.....