webserver-llc / angie

Angie - drop-in replacement for Nginx
https://en.angie.software
BSD 2-Clause "Simplified" License
1.24k stars 65 forks source link

Only the TLSv1.3 protocol can be set #97

Closed shenxuebing closed 2 months ago

VBart commented 2 months ago

Please, explain: what is the purpose of the patch? what problem does it solve?

shenxuebing commented 2 months ago

Please, explain: what is the purpose of the patch? what problem does it solve? image If the cryptographic algorithm suite contains only TLSv1.3 protocols, an error is reported when Angie is started

angie: [emerg] SSL_CTX_set_cipher_list("TLS_AES_256_GCM_SHA384") failed (SSL: error:0A0000B9:SSL routines::no cipher match)

VBart commented 2 months ago

angie: [emerg] SSL_CTX_set_cipher_list("TLS_AES_256_GCM_SHA384") failed (SSL: error:0A0000B9:SSL routines::no cipher match)

This error message from SSL library tries to tell, that those TLSv1.3 ciphers in OpenSSL (and some derivatives) must be set another way, which is clear misconfiguration (which your patch tries to hide instead) that must be fixed by the user (not just skipped with a warning).

In OpenSSL (and its derivatives) TLSv1.3 ciphers must be configured using the ssl_conf_command directive. On the other hand, with LibreSSL (and its derivatives) configuring TLSv1.3 ciphers using the ssl_ciphers directive is perfectly fine. As a result, your patch breaks pretty valid configurations with some SSL-libraries and hides serious security misconfiguration with another libraries.

shenxuebing commented 2 months ago

angie: [emerg] SSL_CTX_set_cipher_list("TLS_AES_256_GCM_SHA384") failed (SSL: error:0A0000B9:SSL routines::no cipher match)

This error message from SSL library tries to tell, that those TLSv1.3 ciphers in OpenSSL (and some derivatives) must be set another way, which is clear misconfiguration (which your patch tries to hide instead) that must be fixed by the user (not just skipped with a warning).

In OpenSSL (and its derivatives) TLSv1.3 ciphers must be configured using the ssl_conf_command directive. On the other hand, with LibreSSL (and its derivatives) configuring TLSv1.3 ciphers using the ssl_ciphers directive is perfectly fine. As a result, your patch breaks pretty valid configurations with some SSL-libraries and hides serious security misconfiguration with another libraries.

Sorry, I used the wrong, after testing using ssl_conf_command can specify TLSv1.3 algorithm. But ssl_ciphers cannot set the TLSv1.3 algorithm, which is really confusing. Thank you for your reply and best wishes.

VBart commented 2 months ago

But ssl_ciphers cannot set the TLSv1.3 algorithm, which is really confusing.

Unfortunately, it's the OpenSSL authors decision to sudden change ciphers configuration interface in the backward incompatible way. There's almost nothing can be done on our side, except maybe a bit improve documentation to better highlight this issue.