]> git.feebdaed.xyz Git - 0xmirror/nginx.git/commitdiff
SSL: disabled certificate compression by default with OpenSSL.
authorSergey Kandaurov <pluknet@nginx.com>
Tue, 15 Jul 2025 11:55:26 +0000 (15:55 +0400)
committerpluknet <pluknet@nginx.com>
Sun, 3 Aug 2025 15:15:16 +0000 (19:15 +0400)
Certificate compression is supported since OpenSSL 3.2, it is enabled
automatically as negotiated in a TLSv1.3 handshake.

Using certificate compression and decompression in runtime may be
suboptimal in terms of CPU and memory consumption in certain typical
scenarios, hence it is disabled by default on both server and client
sides.  It can be enabled with ssl_conf_command and similar directives
in upstream as appropriate, for example:

    ssl_conf_command Options RxCertificateCompression;
    ssl_conf_command Options TxCertificateCompression;

Compressing server certificates requires additional support, this is
addressed separately.

src/event/ngx_event_openssl.c

index ff604c562d6339037b8b49851d78d5b385ba6a19..0c23c3f2f7d751fcab7fd7958dc70e3d8e9e0cab 100644 (file)
@@ -387,6 +387,11 @@ ngx_ssl_create(ngx_ssl_t *ssl, ngx_uint_t protocols, void *data)
     SSL_CTX_set_options(ssl->ctx, SSL_OP_NO_COMPRESSION);
 #endif
 
+#ifdef SSL_OP_NO_TX_CERTIFICATE_COMPRESSION
+    SSL_CTX_set_options(ssl->ctx, SSL_OP_NO_TX_CERTIFICATE_COMPRESSION);
+    SSL_CTX_set_options(ssl->ctx, SSL_OP_NO_RX_CERTIFICATE_COMPRESSION);
+#endif
+
 #ifdef SSL_OP_NO_ANTI_REPLAY
     SSL_CTX_set_options(ssl->ctx, SSL_OP_NO_ANTI_REPLAY);
 #endif