TLS cipher suites
This page helps Posit Connect administrators review available cipher suites and configure a reverse proxy when they need control over cipher selection. Before configuring a reverse proxy, review HTTPS and TLS for TLS version settings and Terminate TLS at a proxy for proxy termination guidance.
Default cipher suites
Connect uses security best practices around available TLS cipher suites and does not provide configuration options to allow less-secure cipher suites.
TLS 1.3
Connect supports these TLS 1.3 cipher suites without configuration:
TLS_AES_128_GCM_SHA256TLS_AES_256_GCM_SHA384TLS_CHACHA20_POLY1305_SHA256
TLS 1.2 and earlier
For TLS 1.2 and earlier connections, Connect offers cipher suites that provide forward secrecy using Elliptic Curve Diffie-Hellman Ephemeral (ECDHE) key exchange. Starting with Connect v2024.06.0, Connect offers the following ECDHE-based cipher suites by default:
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_RSA_WITH_AES_128_CBC_SHATLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_256_CBC_SHATLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
The specific cipher suites offered can vary between versions of Connect.
Removed cipher suites
Connect no longer offers the following cipher suites by default.
Important: Starting with Posit Connect 2026.09.0, you cannot enable RSA key exchange or 3DES cipher suites for TLS connections that Connect terminates. Before you upgrade Connect, upgrade clients that require these cipher suites or terminate TLS at a reverse proxy. Remove any GODEBUG settings removed in Go 1.27 from the Connect service environment before you upgrade. Connect cannot start if one remains set to its old value.
3DES
Starting with Connect v2025.01.0, Connect no longer offers the following 3DES cipher suites by default:
TLS_RSA_WITH_3DES_EDE_CBC_SHATLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
Security vulnerabilities in the 3DES algorithm led Connect to remove these cipher suites.
RSA key exchange
Starting with Connect v2024.06.0, Connect no longer offers cipher suites using RSA key exchange by default during TLS 1.2 and earlier handshakes. These cipher suites include:
TLS_RSA_WITH_RC4_128_SHATLS_RSA_WITH_3DES_EDE_CBC_SHATLS_RSA_WITH_AES_128_CBC_SHATLS_RSA_WITH_AES_256_CBC_SHATLS_RSA_WITH_AES_128_CBC_SHA256TLS_RSA_WITH_AES_128_GCM_SHA256TLS_RSA_WITH_AES_256_GCM_SHA384
Connect removed RSA key exchange cipher suites from the defaults because they lack forward secrecy. Forward secrecy ensures that if a server’s private key is compromised, past encrypted communications cannot be retroactively decrypted.
Working with legacy clients
If you have legacy clients that require RSA key exchange or 3DES cipher suites, we strongly recommend using a reverse proxy (such as nginx or HAProxy) in front of Connect. A reverse proxy provides:
- Complete control over cipher suite selection and ordering
- Ability to support legacy clients without compromising Connect’s security posture
- Centralized TLS configuration across multiple services
- Advanced features like OCSP stapling and certificate rotation
See the Terminate TLS at a proxy section for guidance on configuring Connect behind a reverse proxy.
Control cipher suites with a reverse proxy
Connect does not provide configuration options to explicitly select or order cipher suites. If your organization requires fine-grained control over cipher suite selection, we recommend using a reverse proxy such as nginx, HAProxy, or Apache in front of Connect. For the benefits of this approach, see Working with legacy clients.
See the Terminate TLS at a proxy section for guidance on configuring Connect behind a reverse proxy.
NGINX
Add the ssl_prefer_server_ciphers and ssl_ciphers directives to your NGINX server block. The following example disables DES, 3DES, IDEA, and RC2 ciphers:
nginx.conf
ssl_prefer_server_ciphers on;
ssl_ciphers -DES:-3DES:-IDEA:-RC2;
ssl_prefer_server_ciphers on ensures the server’s cipher preference takes precedence over the client’s. The ssl_ciphers value uses OpenSSL cipher string format. See the OpenSSL ciphers documentation and the NGINX ssl_ciphers reference for the full syntax.
For the complete NGINX proxy configuration, see NGINX reverse proxy.
Apache HTTPD
Add the SSLCipherSuite directive to your Apache VirtualHost block:
httpd.conf
SSLCipherSuite -DES:-3DES:-IDEA:-RC2The SSLCipherSuite directive also uses OpenSSL cipher string format. See the Apache SSLCipherSuite documentation.
For the complete Apache proxy configuration, see Apache reverse proxy.
TLS 1.3
TLS 1.3 uses a separate cipher suite list. The equivalent NGINX configuration is:
nginx.conf
ssl_protocols TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384;
ssl_conf_command Ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384;
ssl_prefer_server_ciphers off;
With TLS 1.3, set ssl_prefer_server_ciphers to off as cipher negotiation works differently.
For more information about the TLS cipher suite implementation in Go and security considerations, see the following resources:
You can also configure the minimum TLS version using the HTTPS.MinimumTLS setting. See the Set the minimum TLS version section for details.