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_SHA256
  • TLS_AES_256_GCM_SHA384
  • TLS_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_SHA
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_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.

Warning

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_SHA
  • TLS_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_SHA
  • TLS_RSA_WITH_3DES_EDE_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_RSA_WITH_AES_128_GCM_SHA256
  • TLS_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:-RC2

The 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.