OPENSSL-CIPHERS(1SSL)

πŸ’– openssl-ciphers β€” SSL cipher display and cipher list command πŸ’–

okay bestie, welcome to the manual page for openssl-ciphers, aka the little command that tells you which ciphers your TLS stack is actually vibing with. it's part of the OpenSSL family, and honestly? it's giving main character energy for anyone who's ever had to argue with a cipher list. πŸŽ€


✨ SYNOPSIS ✨

openssl ciphers [-help] [-s] [-v] [-V] [-tls1] [-tls1_1] [-tls1_2]
[-tls1_3] [-psk] [-srp] [-stdname] [-convert name] [-ciphersuites val]
[-provider name] [-provider-path path] [-provparam [name:]key=value]
[-propquery propq] [cipherlist]

like… look at all those flags. she's got options, and we respect that. πŸ’…


🌸 DESCRIPTION 🌸

so what does this command even do? it takes a textual OpenSSL cipher list and turns it into an ordered SSL cipher preference list. basically you hand it a messy lil string of cipher names, and it hands you back the actual order your TLS handshake is gonna prefer them in. it's your go-to for figuring out what a good cipherlist even looks like. ✨

and here's a lil glow-up note: as of OpenSSL 4.0, the list of TLS 1.3 ciphersuites val and the TLS 1.2 ciphers cipherlist are both processed case-insensitively. so TLS_AES_128_GCM_SHA256 and tls_aes_128_gcm_sha256 are the same girlie. no cap. πŸ”₯


πŸ‘‘ OPTIONS πŸ‘‘

  • -help β€” prints a usage message. that's it, that's the whole job. help a bestie out. 🫢
  • -provider name
  • -provider-path path
  • -provparam [name:]key=value
  • -propquery propq β€” these four are all provider-adjacent, and you should peek at "Provider Options" in openssl(1), provider(7), and property(7) for the full tea. 🍡
  • -s β€” only list the ciphers that are actually supported: the ones consistent with the security level, plus the minimum and maximum protocol version. this is way closer to the real cipher list an actual application would support, so it's the honest version. πŸ’―
PSK and SRP ciphers are not enabled by default β€” they need -psk or -srp to actually show up.

also, -s does not change the default list of supported signature algorithms. and on a server, the list of supported ciphers might also exclude other ciphers depending on the certificates that are configured and whether DH parameters are present. so many variables, so little time. 😭

if you don't use this option, then every cipher that matches the cipherlist gets listed. the whole buffet. πŸ“

  • -psk β€” when you combine this with -s, it includes cipher suites that require PSK. teamwork makes the dream work. 🀝
  • -srp β€” when combined with -s, includes cipher suites that require SRP. heads up though: this option is deprecated. ⚠️ she's old, she's tired, let her rest.
  • -v β€” verbose output, babes. for each cipher suite, it lists the details as provided by SSL_CIPHER_description(3). the full lore. πŸ“–
  • -V β€” like -v, but it also includes the official cipher suite values in hex. for when you need the receipts. πŸ”
  • -tls1_3, -tls1_2, -tls1_1, -tls1 β€” in combination with the -s option, these list the ciphers that could be used if the specified protocol were negotiated. note that not all protocols and flags may be available, depending on how OpenSSL was built. your mileage is literally a compile-time mystery. πŸ™ˆ
  • -stdname β€” puts each cipher suite's standard name right before it. ✨
  • -convert name β€” converts a standard cipher name into its OpenSSL name. translation services, provided free of charge. 🧚
  • -ciphersuites val β€” sets the list of TLSv1.3 ciphersuites. this list gets combined with any TLSv1.2-and-below ciphersuites that have been configured. the format is a simple colon (":") separated list of TLSv1.3 ciphersuite names. by default, this value is:
TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256

iconic lineup honestly. πŸ‘‘

  • cipherlist β€” a cipher list of TLSv1.2 and below ciphersuites, which gets converted into a cipher preference list. this list is combined with any TLSv1.3 ciphersuites that have been configured. if you don't include it, the default cipher list is used instead. the format is described below. ⬇️

🌈 CIPHER LIST FORMAT 🌈

okay so the cipher list is made of one or more cipher strings separated by colons. commas or spaces are also acceptable separators, but colons are the normal choice because obviously. πŸ’…

the cipher string can reference a cipher using its standard name from the IANA TLS Cipher Suites Registry β€” you know the one:

<https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4>

the actual cipher string can take several different forms:

  • it can be a single cipher suite, like AES256-SHA.
  • it can represent a list of cipher suites containing a certain algorithm, or cipher suites of a certain type. for example, SHA256 represents all cipher suites using the digest algorithm SHA256, and TLSv1.2 represents all cipher suites introduced in TLS v.1.2. ✨
  • lists of cipher suites can be combined into a single cipher string using the + character. this acts as a logical AND operation. for example, SHA256+AES represents all cipher suites using the SHA256 and the AES algorithms. both. not either. both. 🫢

πŸŽ€ the prefix characters πŸŽ€

each cipher string can optionally be preceded by one of these characters: !, -, or +. and babes, they do not mean the same thing:

  • if ! is used, the ciphers are permanently deleted from the list. like, gone-gone. the ciphers deleted this way can never reappear in the list, even if they're explicitly stated later. πŸ’€
  • if - is used, the ciphers are deleted from the list, but some or all of them can be added back by later options. she's not petty, she's just taking a break.
  • if + is used, the ciphers are moved to the end of the list. note that this option doesn't add any new ciphers β€” it just moves the matching existing ones. relocation, not recruitment. 🚚

if none of these characters is present, then the string is just interpreted as a list of ciphers to be appended to the current preference list. and here's the tea: if the list includes ciphers that are already present, they will be ignored β€” meaning they will not be moved to the end of the list. stay in your seat, bestie. πŸͺ‘


πŸ’« the special @ strings πŸ’«

  • the cipher string @STRENGTH can be used at any point to sort the current cipher list in order of encryption algorithm key length. gym-bro sorting, if you will. πŸ’ͺ
  • the cipher string @SECLEVEL=n can be used at any point to set the security level to n, which should be a number between zero and five, inclusive. for a description of what each level actually means, check out SSL_CTX_set_security_level(3). πŸ“š

🌟 the DEFAULT keyword 🌟

the cipher list can be prefixed with the DEFAULT keyword, which enables the default cipher list as defined below. but β€” and this is important, bestie β€” unlike cipher strings, this prefix may not be combined with other strings using the + character. for example, DEFAULT+AES is not valid. do not attempt. it will not slay, it will just fail. πŸ™…

the content of the default list is determined at compile time and normally corresponds to:

ALL:!COMPLEMENTOFDEFAULT:!eNULL

periodt. πŸ’…

✨ CIPHER STRINGS ✨

Bestie, here comes the whole entire menu πŸ“ β€” every permitted cipher string and what it actually means. No skipping, we're eating the whole plate.

  • COMPLEMENTOFDEFAULT β€” the cipher suites that live in ALL but are not turned on by default. The reason the default list is what it is: strong security plus reasonable interoperability. A suite can get left off the default list for a bunch of reasons β€” it's weak, it's not "mature" enough, nobody really uses it, etc. Heads up though: this rule does not cover eNULL, because eNULL isn't included by ALL at all (if you need it, that's COMPLEMENTOFALL's job).
  • ALL β€” every cipher suite except the eNULL ciphers (those you have to explicitly enable if you truly want them). And as of OpenSSL 1.0.0, the ALL suites come sensibly ordered by default. slay πŸ’…
  • COMPLEMENTOFALL β€” the cipher suites that ALL does not enable, which right now is just eNULL.
  • HIGH β€” "high" encryption cipher suites. Currently that means the ones with key lengths bigger than 128 bits, plus some 128-bit-key suites thrown in.
  • MEDIUM β€” "medium" encryption cipher suites, currently some of the ones using 128 bit encryption.
  • LOW β€” "low" encryption cipher suites, currently the ones using 64 or 56 bit encryption algorithms, but not the export cipher suites. PSA: all of these have been removed as of OpenSSL 1.1.0. gone, deceased πŸ’€
  • eNULL, NULL β€” the "NULL" ciphers, aka the ones offering no encryption at all. Because they encrypt literally nothing and are a straight-up security risk, they're not enabled through either the DEFAULT or ALL cipher strings. Be careful when you're building cipherlists out of lower-level primitives like kRSA or aECDSA, because those do overlap with the eNULL ciphers. When in doubt, throw !eNULL into your cipherlist.
  • aNULL β€” the cipher suites offering no authentication. Currently this is the anonymous DH algorithms and the anonymous ECDH algorithms. These are vulnerable to "man in the middle" attacks, so using them is discouraged 🚩. They're excluded from the DEFAULT ciphers, but they are included in the ALL ciphers. Be careful when you build cipherlists out of lower-level primitives like kDHE or AES, because those overlap with the aNULL ciphers. When in doubt, include !aNULL in your cipherlist.
  • kRSA, aRSA, RSA β€” cipher suites using RSA key exchange, RSA authentication, or both of them, respectively.
  • kDHE, kEDH, DH β€” cipher suites using ephemeral DH key agreement, anonymous cipher suites included.
  • DHE, EDH β€” cipher suites using authenticated ephemeral DH key agreement.
  • ADH β€” anonymous DH cipher suites. Note that this does not include anonymous Elliptic Curve DH (ECDH) cipher suites.
  • kEECDH, kECDHE, ECDH β€” cipher suites using ephemeral ECDH key agreement, anonymous cipher suites included.
  • ECDHE, EECDH β€” cipher suites using authenticated ephemeral ECDH key agreement.
  • AECDH β€” anonymous Elliptic Curve Diffie-Hellman cipher suites.
  • aDSS, DSS β€” cipher suites using DSS authentication, i.e. the certificates carry DSS keys.
  • aECDSA, ECDSA β€” cipher suites using ECDSA authentication, i.e. the certificates carry ECDSA keys.
  • TLSv1.2, TLSv1.0, SSLv3 β€” lists the cipher suites introduced in TLS v1.2, TLS v1.0 or SSL v3.0, respectively. Note: there are no cipher suites specific to TLS v1.1, bestie, don't go looking. Since this is only the minimum version, if, say, TLSv1.0 gets negotiated, then both TLSv1.0 and SSLv3.0 cipher suites are available.

Note: these cipher strings do not change the negotiated version of SSL or TLS. They only affect the list of available cipher suites. 🫢

  • AES128, AES256, AES β€” cipher suites using 128 bit AES, 256 bit AES, or either 128 or 256 bit AES.
  • AESGCM β€” AES in Galois Counter Mode (GCM). These cipher suites are only supported in TLS v1.2.
  • AESCCM, AESCCM8 β€” AES in Cipher Block Chaining - Message Authentication Mode (CCM). These cipher suites are only supported in TLS v1.2. AESCCM references CCM cipher suites using both 16 and 8 octet Integrity Check Value (ICV), while AESCCM8 only references the 8 octet ICV.
  • ARIA128, ARIA256 β€” cipher suites using 128 bit ARIA or 256 bit ARIA, respectively.
  • ARIA, ARIAGCM β€” cipher suites using either 128 or 256 bit ARIA.
  • CAMELLIA128, CAMELLIA256, CAMELLIA β€” cipher suites using 128 bit CAMELLIA, 256 bit CAMELLIA, or either 128 or 256 bit CAMELLIA.
  • CHACHA20 β€” cipher suites using ChaCha20.
  • 3DES β€” cipher suites using triple DES.
  • DES β€” cipher suites using DES (not triple DES). All of these cipher suites have been removed in OpenSSL 1.1.0. R.I.P. πŸ™ˆ
  • RC4 β€” cipher suites using RC4.
  • RC2 β€” cipher suites using RC2.
  • IDEA β€” cipher suites using IDEA.
  • SEED β€” cipher suites using SEED.
  • MD5 β€” cipher suites using MD5.
  • SHA1, SHA β€” cipher suites using SHA1.
  • SHA256, SHA384 β€” cipher suites using SHA256 or SHA384.
  • aGOST β€” cipher suites using GOST R 34.10 (either 2001 or 2012) for authentication (this needs a provider that supports GOST algorithms).
  • aGOST01 β€” cipher suites that can be uses with GOST R 34.10-2001 keys for authentication.
  • aGOST12 β€” cipher suites that can be used with GOST R 34.10-2012 keys for authentication.
  • kGOST β€” cipher suites using VKO 34.10 key exchange and key wrap specified in the RFC 4357 or RFC 7836.
  • kGOST18 β€” cipher suites using VKO 34.10 key exchange specified in the RFC 7836 and KExp15 key export specified in the RFC 9189.
  • GOST94 β€” cipher suites using HMAC based on GOST R 34.11-94.
  • GOST12 β€” cipher suites using HMAC based on GOST R 34.11-2012 256 bits.
  • GOST89MAC β€” cipher suites using GOST 28147-89 MAC instead of HMAC with S-boxes A.
  • GOST89MAC12 β€” cipher suites using GOST 28147-89 MAC instead of HMAC with S-boxes Z.
  • GOST89 β€” cipher suites using any GOST cipher (GOST 28147-89, Magma or Kuznyechik).
  • PSK β€” all cipher suites using pre-shared keys (PSK).
  • kPSK, kECDHEPSK, kDHEPSK, kRSAPSK β€” cipher suites using PSK key exchange, ECDHE_PSK, DHE_PSK or RSA_PSK.
  • aPSK β€” cipher suites using PSK authentication (currently all PSK modes apart from RSA_PSK).
  • kSRP, SRP β€” cipher suites using SRP key exchange.
  • aSRP β€” cipher suites using SRP authentication.
  • SUITEB128, SUITEB128ONLY, SUITEB192 β€” enables suite B mode of operation using 128 (permitting 192 bit mode by peer) 128 bit (not permitting 192 bit by peer) or 192 bit level of security respectively. If you use these, these cipherstrings should appear first in the cipher list, and anything after them is ignored. Setting Suite B mode has additional consequences required to comply with RFC6460. In particular: the supported signature algorithms is reduced to support only ECDSA and SHA256 or SHA384, only the elliptic curves P-256 and P-384 can be used, and only the two suite B compliant cipher suites (ECDHE-ECDSA-AES128-GCM-SHA256 and ECDHE-ECDSA-AES256-GCM-SHA384) are permissible. That's a lot of rules, but okay πŸ‘‘
  • CBC β€” all cipher suites using encryption algorithm in Cipher Block Chaining (CBC) mode. These cipher suites are only supported in TLS v1.2 and earlier. Currently it's an alias for the following cipherstrings: SSL_DES, SSL_3DES, SSL_RC2, SSL_IDEA, SSL_AES128, SSL_AES256, SSL_CAMELLIA128, SSL_CAMELLIA256, SSL_SEED.

🌸 CIPHER SUITE NAMES 🌸

The lists below hand you the standard SSL or TLS cipher suites names from the relevant specification, plus their OpenSSL equivalents. You can use either standard names or OpenSSL names in cipher lists β€” or a lil mix of both, your call bestie πŸ’–

It should be noted, that several cipher suite names do not include the authentication used, e.g. DES-CBC3-SHA. In these cases, RSA authentication is used.

πŸ¦‹ AES cipher suites for TLS v1.2 πŸ¦‹

okay so first up, the AES girlies πŸ’… these are the ones you'll actually meet in the wild, and here's the full roster β€” IANA name on the left, the OpenSSL name on the right, in a code block so nothing gets mangled:

TLS_DH_anon_WITH_AES_128_CBC_SHA256            ADH-AES128-SHA256
TLS_DH_anon_WITH_AES_128_CBC_SHA               ADH-AES128-SHA
TLS_DH_anon_WITH_AES_128_GCM_SHA256            ADH-AES128-GCM-SHA256
TLS_DH_anon_WITH_AES_256_CBC_SHA256            ADH-AES256-SHA256
TLS_DH_anon_WITH_AES_256_CBC_SHA               ADH-AES256-SHA
TLS_DH_anon_WITH_AES_256_GCM_SHA384            ADH-AES256-GCM-SHA384
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256            DHE-DSS-AES128-SHA256
TLS_DHE_DSS_WITH_AES_128_CBC_SHA               DHE-DSS-AES128-SHA
TLS_DHE_DSS_WITH_AES_128_GCM_SHA256            DHE-DSS-AES128-GCM-SHA256
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256            DHE-DSS-AES256-SHA256
TLS_DHE_DSS_WITH_AES_256_CBC_SHA               DHE-DSS-AES256-SHA
TLS_DHE_DSS_WITH_AES_256_GCM_SHA384            DHE-DSS-AES256-GCM-SHA384
TLS_DHE_PSK_WITH_AES_128_CBC_SHA256            DHE-PSK-AES128-CBC-SHA256
TLS_DHE_PSK_WITH_AES_128_CBC_SHA               DHE-PSK-AES128-CBC-SHA
TLS_DHE_PSK_WITH_AES_128_CCM_8                 DHE-PSK-AES128-CCM8
TLS_DHE_PSK_WITH_AES_128_CCM                   DHE-PSK-AES128-CCM
TLS_DHE_PSK_WITH_AES_128_GCM_SHA256            DHE-PSK-AES128-GCM-SHA256
TLS_DHE_PSK_WITH_AES_256_CBC_SHA384            DHE-PSK-AES256-CBC-SHA384
TLS_DHE_PSK_WITH_AES_256_CBC_SHA               DHE-PSK-AES256-CBC-SHA
TLS_DHE_PSK_WITH_AES_256_CCM_8                 DHE-PSK-AES256-CCM8
TLS_DHE_PSK_WITH_AES_256_CCM                   DHE-PSK-AES256-CCM
TLS_DHE_PSK_WITH_AES_256_GCM_SHA384            DHE-PSK-AES256-GCM-SHA384
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256            DHE-RSA-AES128-SHA256
TLS_DHE_RSA_WITH_AES_128_CBC_SHA               DHE-RSA-AES128-SHA
TLS_DHE_RSA_WITH_AES_128_CCM_8                 DHE-RSA-AES128-CCM8
TLS_DHE_RSA_WITH_AES_128_CCM                   DHE-RSA-AES128-CCM
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256            DHE-RSA-AES128-GCM-SHA256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256            DHE-RSA-AES256-SHA256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA               DHE-RSA-AES256-SHA
TLS_DHE_RSA_WITH_AES_256_CCM_8                 DHE-RSA-AES256-CCM8
TLS_DHE_RSA_WITH_AES_256_CCM                   DHE-RSA-AES256-CCM
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384            DHE-RSA-AES256-GCM-SHA384
TLS_ECDH_anon_WITH_AES_128_CBC_SHA             AECDH-AES128-SHA
TLS_ECDH_anon_WITH_AES_128_CCM_8               AECDH-AES128-CCM8
TLS_ECDH_anon_WITH_AES_128_CCM                 AECDH-AES128-CCM
TLS_ECDH_anon_WITH_AES_256_CBC_SHA             AECDH-AES256-SHA
TLS_ECDH_anon_WITH_AES_256_CCM_8               AECDH-AES256-CCM8
TLS_ECDH_anon_WITH_AES_256_CCM                 AECDH-AES256-CCM
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256         ECDH-ECDSA-AES128-SHA256
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA            ECDH-ECDSA-AES128-SHA
TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256         ECDH-ECDSA-AES128-GCM-SHA256
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384         ECDH-ECDSA-AES256-SHA384
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA            ECDH-ECDSA-AES256-SHA
TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384         ECDH-ECDSA-AES256-GCM-SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256        ECDHE-ECDSA-AES128-SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA           ECDHE-ECDSA-AES128-SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8             ECDHE-ECDSA-AES128-CCM8
TLS_ECDHE_ECDSA_WITH_AES_128_CCM               ECDHE-ECDSA-AES128-CCM
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256        ECDHE-ECDSA-AES128-GCM-SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384        ECDHE-ECDSA-AES256-SHA384
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA           ECDHE-ECDSA-AES256-SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8             ECDHE-ECDSA-AES256-CCM8
TLS_ECDHE_ECDSA_WITH_AES_256_CCM               ECDHE-ECDSA-AES256-CCM
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384        ECDHE-ECDSA-AES256-GCM-SHA384
TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256          ECDHE-PSK-AES128-CBC-SHA256
TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA             ECDHE-PSK-AES128-CBC-SHA
TLS_ECDHE_PSK_WITH_AES_128_CCM_8_SHA256        ECDHE-PSK-AES128-CCM8
TLS_ECDHE_PSK_WITH_AES_128_CCM_SHA256          ECDHE-PSK-AES128-CCM
TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256          ECDHE-PSK-AES128-GCM-SHA256
TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384          ECDHE-PSK-AES256-CBC-SHA384
TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA             ECDHE-PSK-AES256-CBC-SHA
TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384          ECDHE-PSK-AES256-GCM-SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256          ECDHE-RSA-AES128-SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA             ECDHE-RSA-AES128-SHA
TLS_ECDHE_RSA_WITH_AES_128_CCM_8               ECDHE-RSA-AES128-CCM8
TLS_ECDHE_RSA_WITH_AES_128_CCM                 ECDHE-RSA-AES128-CCM
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256          ECDHE-RSA-AES128-GCM-SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384          ECDHE-RSA-AES256-SHA384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA             ECDHE-RSA-AES256-SHA
TLS_ECDHE_RSA_WITH_AES_256_CCM_8               ECDHE-RSA-AES256-CCM8
TLS_ECDHE_RSA_WITH_AES_256_CCM                 ECDHE-RSA-AES256-CCM
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384          ECDHE-RSA-AES256-GCM-SHA384
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256           ECDH-RSA-AES128-SHA256
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA              ECDH-RSA-AES128-SHA
TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256           ECDH-RSA-AES128-GCM-SHA256
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384           ECDH-RSA-AES256-SHA384
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA              ECDH-RSA-AES256-SHA
TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384           ECDH-RSA-AES256-GCM-SHA384
TLS_PSK_WITH_AES_128_CBC_SHA256                PSK-AES128-CBC-SHA256
TLS_PSK_WITH_AES_128_CBC_SHA                   PSK-AES128-CBC-SHA
TLS_PSK_WITH_AES_128_CCM_8                     PSK-AES128-CCM8
TLS_PSK_WITH_AES_128_CCM                       PSK-AES128-CCM
TLS_PSK_WITH_AES_128_GCM_SHA256                PSK-AES128-GCM-SHA256
TLS_PSK_WITH_AES_256_CBC_SHA384                PSK-AES256-CBC-SHA384
TLS_PSK_WITH_AES_256_CBC_SHA                   PSK-AES256-CBC-SHA
TLS_PSK_WITH_AES_256_CCM_8                     PSK-AES256-CCM8
TLS_PSK_WITH_AES_256_CCM                       PSK-AES256-CCM
TLS_PSK_WITH_AES_256_GCM_SHA384                PSK-AES256-GCM-SHA384
TLS_RSA_PSK_WITH_AES_128_CBC_SHA256            RSA-PSK-AES128-CBC-SHA256
TLS_RSA_PSK_WITH_AES_128_CBC_SHA               RSA-PSK-AES128-CBC-SHA
TLS_RSA_PSK_WITH_AES_128_GCM_SHA256            RSA-PSK-AES128-GCM-SHA256
TLS_RSA_PSK_WITH_AES_256_CBC_SHA384            RSA-PSK-AES256-CBC-SHA384
TLS_RSA_PSK_WITH_AES_256_CBC_SHA               RSA-PSK-AES256-CBC-SHA
TLS_RSA_PSK_WITH_AES_256_GCM_SHA384            RSA-PSK-AES256-GCM-SHA384
TLS_RSA_WITH_AES_128_CBC_SHA256                AES128-SHA256
TLS_RSA_WITH_AES_128_CBC_SHA                   AES128-SHA
TLS_RSA_WITH_AES_128_CCM_8                     AES128-CCM8
TLS_RSA_WITH_AES_128_CCM                       AES128-CCM
TLS_RSA_WITH_AES_128_GCM_SHA256                AES128-GCM-SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256                AES256-SHA256
TLS_RSA_WITH_AES_256_CBC_SHA                   AES256-SHA
TLS_RSA_WITH_AES_256_CCM_8                     AES256-CCM8
TLS_RSA_WITH_AES_256_CCM                       AES256-CCM
TLS_RSA_WITH_AES_256_GCM_SHA384                AES256-GCM-SHA384

like, yes, it's a lot πŸ’€ but that's the whole list, no skips, we don't do skips here.


🌸 Camellia cipher suites for TLS v1.2 🌸

next up: Camellia, the underrated icon πŸŽ€ same deal β€” IANA name left, OpenSSL name right:

TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256       ADH-CAMELLIA128-SHA256
TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA          ADH-CAMELLIA128-SHA
TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256       ADH-CAMELLIA128-GCM-SHA256
TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256       ADH-CAMELLIA256-SHA256
TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA          ADH-CAMELLIA256-SHA
TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384       ADH-CAMELLIA256-GCM-SHA384
TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256       DHE-DSS-CAMELLIA128-SHA256
TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA          DHE-DSS-CAMELLIA128-SHA
TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256       DHE-DSS-CAMELLIA128-GCM-SHA256
TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256       DHE-DSS-CAMELLIA256-SHA256
TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA          DHE-DSS-CAMELLIA256-SHA
TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384       DHE-DSS-CAMELLIA256-GCM-SHA384
TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256       DHE-RSA-CAMELLIA128-SHA256
TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA          DHE-RSA-CAMELLIA128-SHA
TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256       DHE-RSA-CAMELLIA128-GCM-SHA256
TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256       DHE-RSA-CAMELLIA256-SHA256
TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA          DHE-RSA-CAMELLIA256-SHA
TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384       DHE-RSA-CAMELLIA256-GCM-SHA384
TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256    ECDH-ECDSA-CAMELLIA128-SHA256
TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384    ECDH-ECDSA-CAMELLIA256-SHA384
TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256   ECDHE-ECDSA-CAMELLIA128-SHA256
TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384   ECDHE-ECDSA-CAMELLIA256-SHA384
TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256     ECDHE-PSK-CAMELLIA128-SHA256
TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384     ECDHE-PSK-CAMELLIA256-SHA384
TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256     ECDHE-RSA-CAMELLIA128-SHA256
TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384     ECDHE-RSA-CAMELLIA256-SHA384
TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256      ECDH-RSA-CAMELLIA128-SHA256
TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384      ECDH-RSA-CAMELLIA256-SHA384
TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256           CAMELLIA128-SHA256
TLS_RSA_WITH_CAMELLIA_128_CBC_SHA              CAMELLIA128-SHA
TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256           CAMELLIA128-GCM-SHA256
TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256           CAMELLIA256-SHA256
TLS_RSA_WITH_CAMELLIA_256_CBC_SHA              CAMELLIA256-SHA
TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384           CAMELLIA256-GCM-SHA384

🌈 SEED cipher suites for TLS v1.2 🌈

and then SEED, the little guy of the group, only four entries, we love a short list fr fr:

TLS_DH_anon_WITH_SEED_CBC_SHA                  ADH-SEED-SHA
TLS_DHE_DSS_WITH_SEED_CBC_SHA                  DHE-DSS-SEED-SHA
TLS_DHE_RSA_WITH_SEED_CBC_SHA                  DHE-RSA-SEED-SHA
TLS_RSA_WITH_SEED_CBC_SHA                      SEED-SHA

πŸ’œ GOST cipher suites for TLS v1.2 πŸ’œ

okay so GOST time, and bestie listen up, there's a whole thing here πŸ‘€

Note: these ciphers require a provider that supports GOST cryptographic algorithms, such as the gostprov provider, which isn't part of the OpenSSL distribution.

so like, you literally cannot just vibe-check these β€” you need the extra provider or they're not showing up to the party, no cap.

TLS_GOSTR341001_WITH_28147_CNT_IMIT         GOST2001-GOST89-GOST89
TLS_GOSTR341001_WITH_NULL_GOSTR3411         GOST2001-NULL-GOST94
                                            IANA-GOST2012-GOST8912-GOST8912
                                            LEGACY-GOST2012-GOST8912-GOST8912
                                            GOST2012-NULL-GOST12
                                            GOST2012-KUZNYECHIK-KUZNYECHIKOMAC
                                            GOST2012-MAGMA-MAGMAOMAC

(note that some of these only have the OpenSSL-side name filled in β€” the left column being empty is literally how they're listed, not me being lazy πŸ’…)


⭐ ARIA cipher suites from RFC6209, extending TLS v1.2 ⭐

last one for this stretch, and there's a lil catch:

Note: the CBC modes mentioned in this RFC are not supported.

so the ARIA CBC modes? not invited. the rest of it, go read RFC6209, iykyk πŸ¦‹

  • TLS_DH_anon_WITH_ARIA_128_CBC_SHA256 β†’ ADH-ARIA128-CBC-SHA256
  • TLS_DH_anon_WITH_ARIA_128_GCM_SHA256 β†’ ADH-ARIA128-GCM-SHA256
  • TLS_DH_anon_WITH_ARIA_256_CBC_SHA384 β†’ ADH-ARIA256-CBC-SHA384
  • TLS_DH_anon_WITH_ARIA_256_GCM_SHA384 β†’ ADH-ARIA256-GCM-SHA384
  • TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256 β†’ DHE-DSS-ARIA128-GCM-SHA256
  • TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384 β†’ DHE-DSS-ARIA256-GCM-SHA384
  • TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256 β†’ DHE-PSK-ARIA128-CBC-SHA256
  • TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 β†’ DHE-PSK-ARIA128-GCM-SHA256
  • TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384 β†’ DHE-PSK-ARIA256-CBC-SHA384
  • TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 β†’ DHE-PSK-ARIA256-GCM-SHA384
  • TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 β†’ DHE-RSA-ARIA128-CBC-SHA256
  • TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 β†’ DHE-RSA-ARIA128-GCM-SHA256
  • TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 β†’ DHE-RSA-ARIA256-CBC-SHA384
  • TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 β†’ DHE-RSA-ARIA256-GCM-SHA384
  • TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 β†’ ECDHE-ECDSA-ARIA128-CBC-SHA256
  • TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 β†’ ECDHE-ECDSA-ARIA128-GCM-SHA256
  • TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 β†’ ECDHE-ECDSA-ARIA256-CBC-SHA384
  • TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 β†’ ECDHE-ECDSA-ARIA256-GCM-SHA384
  • TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256 β†’ ECDHE-PSK-ARIA128-CBC-SHA256
  • TLS_ECDHE_PSK_WITH_ARIA_128_GCM_SHA256 β†’ ECDHE-PSK-ARIA128-GCM-SHA256
  • TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384 β†’ ECDHE-PSK-ARIA256-CBC-SHA384
  • TLS_ECDHE_PSK_WITH_ARIA_256_GCM_SHA384 β†’ ECDHE-PSK-ARIA256-GCM-SHA384
  • TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256 β†’ ECDHE-RSA-ARIA128-CBC-SHA256
  • TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 β†’ ECDHE-RSA-ARIA128-GCM-SHA256
  • TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384 β†’ ECDHE-RSA-ARIA256-CBC-SHA384
  • TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 β†’ ECDHE-RSA-ARIA256-GCM-SHA384
  • TLS_PSK_WITH_ARIA_128_CBC_SHA256 β†’ PSK-ARIA128-CBC-SHA256
  • TLS_PSK_WITH_ARIA_128_GCM_SHA256 β†’ PSK-ARIA128-GCM-SHA256
  • TLS_PSK_WITH_ARIA_256_GCM_SHA384 β†’ PSK-ARIA256-GCM-SHA384
  • TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 β†’ RSA-PSK-ARIA128-CBC-SHA256
  • TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 β†’ RSA-PSK-ARIA128-GCM-SHA256
  • TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 β†’ RSA-PSK-ARIA256-CBC-SHA384
  • TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 β†’ RSA-PSK-ARIA256-GCM-SHA384
  • TLS_RSA_WITH_ARIA_128_CBC_SHA256 β†’ ARIA128-CBC-SHA256
  • TLS_RSA_WITH_ARIA_128_GCM_SHA256 β†’ ARIA128-GCM-SHA256
  • TLS_RSA_WITH_ARIA_256_CBC_SHA384 β†’ ARIA256-CBC-SHA384
  • TLS_RSA_WITH_ARIA_256_GCM_SHA384 β†’ ARIA256-GCM-SHA384

✨ ChaCha20-Poly1305 cipher suites, extending TLS v1.2 ✨

No cap, this group is the moment β€” seven suites only, all of them iconic. πŸ¦‹

  • TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256 β†’ DHE-PSK-CHACHA20-POLY1305
  • TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 β†’ DHE-RSA-CHACHA20-POLY1305
  • TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 β†’ ECDHE-ECDSA-CHACHA20-POLY1305
  • TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 β†’ ECDHE-PSK-CHACHA20-POLY1305
  • TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 β†’ ECDHE-RSA-CHACHA20-POLY1305
  • TLS_PSK_WITH_CHACHA20_POLY1305_SHA256 β†’ PSK-CHACHA20-POLY1305
  • TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256 β†’ RSA-PSK-CHACHA20-POLY1305

🌸 Elliptic curve cipher suites for TLS v.1.2 🌸

okay this is the BIG one, bestie β€” grab a snack, hydrate, we're going through every single one of these and they all matter. πŸ’– Every line here is TLS name β†’ OpenSSL name, and you can use either side in your cipher string, fr fr.

  • TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA β†’ AECDH-DES-CBC3-SHA
  • TLS_ECDH_anon_WITH_AES_128_CBC_SHA β†’ AECDH-AES128-SHA
  • TLS_ECDH_anon_WITH_AES_128_CCM_8 β†’ AECDH-AES128-CCM8
  • TLS_ECDH_anon_WITH_AES_128_CCM β†’ AECDH-AES128-CCM
  • TLS_ECDH_anon_WITH_AES_256_CBC_SHA β†’ AECDH-AES256-SHA
  • TLS_ECDH_anon_WITH_AES_256_CCM_8 β†’ AECDH-AES256-CCM8
  • TLS_ECDH_anon_WITH_AES_256_CCM β†’ AECDH-AES256-CCM
  • TLS_ECDH_anon_WITH_RC4_128_SHA β†’ AECDH-RC4-SHA
  • TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA β†’ ECDH-ECDSA-DES-CBC3-SHA
  • TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 β†’ ECDH-ECDSA-AES128-SHA256
  • TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA β†’ ECDH-ECDSA-AES128-SHA
  • TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 β†’ ECDH-ECDSA-AES128-GCM-SHA256
  • TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 β†’ ECDH-ECDSA-AES256-SHA384
  • TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA β†’ ECDH-ECDSA-AES256-SHA
  • TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 β†’ ECDH-ECDSA-AES256-GCM-SHA384
  • TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 β†’ ECDH-ECDSA-CAMELLIA128-SHA256
  • TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 β†’ ECDH-ECDSA-CAMELLIA256-SHA384
  • TLS_ECDH_ECDSA_WITH_RC4_128_SHA β†’ ECDH-ECDSA-RC4-SHA
  • TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA β†’ ECDH-RSA-DES-CBC3-SHA
  • TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 β†’ ECDH-RSA-AES128-SHA256
  • TLS_ECDH_RSA_WITH_AES_128_CBC_SHA β†’ ECDH-RSA-AES128-SHA
  • TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 β†’ ECDH-RSA-AES128-GCM-SHA256
  • TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 β†’ ECDH-RSA-AES256-SHA384
  • TLS_ECDH_RSA_WITH_AES_256_CBC_SHA β†’ ECDH-RSA-AES256-SHA
  • TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 β†’ ECDH-RSA-AES256-GCM-SHA384
  • TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 β†’ ECDH-RSA-CAMELLIA128-SHA256
  • TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 β†’ ECDH-RSA-CAMELLIA256-SHA384
  • TLS_ECDH_RSA_WITH_RC4_128_SHA β†’ ECDH-RSA-RC4-SHA
  • TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA β†’ ECDHE-ECDSA-DES-CBC3-SHA
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 β†’ ECDHE-ECDSA-AES128-SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA β†’ ECDHE-ECDSA-AES128-SHA
  • TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 β†’ ECDHE-ECDSA-AES128-CCM8
  • TLS_ECDHE_ECDSA_WITH_AES_128_CCM β†’ ECDHE-ECDSA-AES128-CCM
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 β†’ ECDHE-ECDSA-AES128-GCM-SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 β†’ ECDHE-ECDSA-AES256-SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA β†’ ECDHE-ECDSA-AES256-SHA
  • TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 β†’ ECDHE-ECDSA-AES256-CCM8
  • TLS_ECDHE_ECDSA_WITH_AES_256_CCM β†’ ECDHE-ECDSA-AES256-CCM
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 β†’ ECDHE-ECDSA-AES256-GCM-SHA384
  • TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 β†’ ECDHE-ECDSA-ARIA128-CBC-SHA256
  • TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 β†’ ECDHE-ECDSA-ARIA128-GCM-SHA256
  • TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 β†’ ECDHE-ECDSA-ARIA256-CBC-SHA384
  • TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 β†’ ECDHE-ECDSA-ARIA256-GCM-SHA384
  • TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 β†’ ECDHE-ECDSA-CAMELLIA128-SHA256
  • TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 β†’ ECDHE-ECDSA-CAMELLIA256-SHA384
  • TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 β†’ ECDHE-ECDSA-CHACHA20-POLY1305
  • TLS_ECDHE_ECDSA_WITH_RC4_128_SHA β†’ ECDHE-ECDSA-RC4-SHA
  • TLS_ECDHE_ECDSA_WITH_SM4_CCM_SM3 β†’ ECDHE-ECDSA-SM4-CCM-SM3
  • TLS_ECDHE_ECDSA_WITH_SM4_GCM_SM3 β†’ ECDHE-ECDSA-SM4-GCM-SM3
  • TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA β†’ ECDHE-RSA-DES-CBC3-SHA
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 β†’ ECDHE-RSA-AES128-SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA β†’ ECDHE-RSA-AES128-SHA
  • TLS_ECDHE_RSA_WITH_AES_128_CCM_8 β†’ ECDHE-RSA-AES128-CCM8
  • TLS_ECDHE_RSA_WITH_AES_128_CCM β†’ ECDHE-RSA-AES128-CCM
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 β†’ ECDHE-RSA-AES128-GCM-SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 β†’ ECDHE-RSA-AES256-SHA384
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA β†’ ECDHE-RSA-AES256-SHA
  • TLS_ECDHE_RSA_WITH_AES_256_CCM_8 β†’ ECDHE-RSA-AES256-CCM8
  • TLS_ECDHE_RSA_WITH_AES_256_CCM β†’ ECDHE-RSA-AES256-CCM
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 β†’ ECDHE-RSA-AES256-GCM-SHA384
  • TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256 β†’ ECDHE-RSA-ARIA128-CBC-SHA256
  • TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 β†’ ECDHE-RSA-ARIA128-GCM-SHA256
  • TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384 β†’ ECDHE-RSA-ARIA256-CBC-SHA384
  • TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 β†’ ECDHE-RSA-ARIA256-GCM-SHA384
  • TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 β†’ ECDHE-RSA-CAMELLIA128-SHA256
  • TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 β†’ ECDHE-RSA-CAMELLIA256-SHA384
  • TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 β†’ ECDHE-RSA-CHACHA20-POLY1305
  • TLS_ECDHE_RSA_WITH_RC4_128_SHA β†’ ECDHE-RSA-RC4-SHA
  • TLS_ECDHE_RSA_WITH_SM4_CCM_SM3 β†’ ECDHE-RSA-SM4-CCM-SM3
  • TLS_ECDHE_RSA_WITH_SM4_GCM_SM3 β†’ ECDHE-RSA-SM4-GCM-SM3
  • TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA β†’ ECDHE-PSK-DES-CBC3-SHA
  • TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 β†’ ECDHE-PSK-AES128-CBC-SHA256
  • TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA β†’ ECDHE-PSK-AES128-CBC-SHA
  • TLS_ECDHE_PSK_WITH_AES_128_CCM_8_SHA256 β†’ ECDHE-PSK-AES128-CCM8
  • TLS_ECDHE_PSK_WITH_AES_128_CCM_SHA256 β†’ ECDHE-PSK-AES128-CCM
  • TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256 β†’ ECDHE-PSK-AES128-GCM-SHA256
  • TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 β†’ ECDHE-PSK-AES256-CBC-SHA384
  • TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA β†’ ECDHE-PSK-AES256-CBC-SHA
  • TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384 β†’ ECDHE-PSK-AES256-GCM-SHA384
  • TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256 β†’ ECDHE-PSK-ARIA128-CBC-SHA256
  • TLS_ECDHE_PSK_WITH_ARIA_128_GCM_SHA256 β†’ ECDHE-PSK-ARIA128-GCM-SHA256
  • TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384 β†’ ECDHE-PSK-ARIA256-CBC-SHA384
  • TLS_ECDHE_PSK_WITH_ARIA_256_GCM_SHA384 β†’ ECDHE-PSK-ARIA256-GCM-SHA384
  • TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 β†’ ECDHE-PSK-CAMELLIA128-SHA256
  • TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 β†’ ECDHE-PSK-CAMELLIA256-SHA384
  • TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 β†’ ECDHE-PSK-CHACHA20-POLY1305
  • TLS_ECDHE_PSK_WITH_RC4_128_SHA β†’ ECDHE-PSK-RC4-SHA
  • TLS_ECDHE_PSK_WITH_SM4_CCM_SM3 β†’ ECDHE-PSK-SM4-CCM-SM3
  • TLS_ECDHE_PSK_WITH_SM4_GCM_SM3 β†’ ECDHE-PSK-SM4-GCM-SM3

and that's the whole elliptic-curve roster, every last one of them πŸ’… keep going bestie, there's more below

πŸ’– Pre-shared keying (PSK) cipher suites πŸ’–

These are the PSK girlies β€” everything that runs on pre-shared keys instead of certs, from the classic DHE and ECDHE flavours to plain PSK and RSA-PSK. Both the IANA long name and the short name are listed, so you can use either, no cap:

  • TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 β€” DHE-PSK-AES128-CBC-SHA256
  • TLS_DHE_PSK_WITH_AES_128_CBC_SHA β€” DHE-PSK-AES128-CBC-SHA
  • TLS_DHE_PSK_WITH_AES_128_CCM_8 β€” DHE-PSK-AES128-CCM8
  • TLS_DHE_PSK_WITH_AES_128_CCM β€” DHE-PSK-AES128-CCM
  • TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 β€” DHE-PSK-AES128-GCM-SHA256
  • TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 β€” DHE-PSK-AES256-CBC-SHA384
  • TLS_DHE_PSK_WITH_AES_256_CBC_SHA β€” DHE-PSK-AES256-CBC-SHA
  • TLS_DHE_PSK_WITH_AES_256_CCM_8 β€” DHE-PSK-AES256-CCM8
  • TLS_DHE_PSK_WITH_AES_256_CCM β€” DHE-PSK-AES256-CCM
  • TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 β€” DHE-PSK-AES256-GCM-SHA384
  • TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256 β€” DHE-PSK-ARIA128-CBC-SHA256
  • TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 β€” DHE-PSK-ARIA128-GCM-SHA256
  • TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384 β€” DHE-PSK-ARIA256-CBC-SHA384
  • TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 β€” DHE-PSK-ARIA256-GCM-SHA384
  • TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256 β€” DHE-PSK-CHACHA20-POLY1305
  • TLS_DHE_PSK_WITH_SM4_CCM_SM3 β€” DHE-PSK-SM4-CCM-SM3
  • TLS_DHE_PSK_WITH_SM4_GCM_SM3 β€” DHE-PSK-SM4-GCM-SM3
  • TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA β€” ECDHE-PSK-DES-CBC3-SHA
  • TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 β€” ECDHE-PSK-AES128-CBC-SHA256
  • TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA β€” ECDHE-PSK-AES128-CBC-SHA
  • TLS_ECDHE_PSK_WITH_AES_128_CCM_8_SHA256 β€” ECDHE-PSK-AES128-CCM8
  • TLS_ECDHE_PSK_WITH_AES_128_CCM_SHA256 β€” ECDHE-PSK-AES128-CCM
  • TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256 β€” ECDHE-PSK-AES128-GCM-SHA256
  • TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 β€” ECDHE-PSK-AES256-CBC-SHA384
  • TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA β€” ECDHE-PSK-AES256-CBC-SHA
  • TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384 β€” ECDHE-PSK-AES256-GCM-SHA384
  • TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256 β€” ECDHE-PSK-ARIA128-CBC-SHA256
  • TLS_ECDHE_PSK_WITH_ARIA_128_GCM_SHA256 β€” ECDHE-PSK-ARIA128-GCM-SHA256
  • TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384 β€” ECDHE-PSK-ARIA256-CBC-SHA384
  • TLS_ECDHE_PSK_WITH_ARIA_256_GCM_SHA384 β€” ECDHE-PSK-ARIA256-GCM-SHA384
  • TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 β€” ECDHE-PSK-CAMELLIA128-SHA256
  • TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 β€” ECDHE-PSK-CAMELLIA256-SHA384
  • TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 β€” ECDHE-PSK-CHACHA20-POLY1305
  • TLS_ECDHE_PSK_WITH_RC4_128_SHA β€” ECDHE-PSK-RC4-SHA
  • TLS_ECDHE_PSK_WITH_SM4_CCM_SM3 β€” ECDHE-PSK-SM4-CCM-SM3
  • TLS_ECDHE_PSK_WITH_SM4_GCM_SM3 β€” ECDHE-PSK-SM4-GCM-SM3
  • TLS_PSK_WITH_AES_128_CBC_SHA256 β€” PSK-AES128-CBC-SHA256
  • TLS_PSK_WITH_AES_128_CBC_SHA β€” PSK-AES128-CBC-SHA
  • TLS_PSK_WITH_AES_128_CCM_8 β€” PSK-AES128-CCM8
  • TLS_PSK_WITH_AES_128_CCM β€” PSK-AES128-CCM
  • TLS_PSK_WITH_AES_128_GCM_SHA256 β€” PSK-AES128-GCM-SHA256
  • TLS_PSK_WITH_AES_256_CBC_SHA384 β€” PSK-AES256-CBC-SHA384
  • TLS_PSK_WITH_AES_256_CBC_SHA β€” PSK-AES256-CBC-SHA
  • TLS_PSK_WITH_AES_256_CCM_8 β€” PSK-AES256-CCM8
  • TLS_PSK_WITH_AES_256_CCM β€” PSK-AES256-CCM
  • TLS_PSK_WITH_AES_256_GCM_SHA384 β€” PSK-AES256-GCM-SHA384
  • TLS_PSK_WITH_ARIA_128_CBC_SHA256 β€” PSK-ARIA128-CBC-SHA256
  • TLS_PSK_WITH_ARIA_128_GCM_SHA256 β€” PSK-ARIA128-GCM-SHA256
  • TLS_PSK_WITH_ARIA_256_GCM_SHA384 β€” PSK-ARIA256-GCM-SHA384
  • TLS_PSK_WITH_CHACHA20_POLY1305_SHA256 β€” PSK-CHACHA20-POLY1305
  • TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 β€” RSA-PSK-AES128-CBC-SHA256
  • TLS_RSA_PSK_WITH_AES_128_CBC_SHA β€” RSA-PSK-AES128-CBC-SHA
  • TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 β€” RSA-PSK-AES128-GCM-SHA256
  • TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 β€” RSA-PSK-AES256-CBC-SHA384
  • TLS_RSA_PSK_WITH_AES_256_CBC_SHA β€” RSA-PSK-AES256-CBC-SHA
  • TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 β€” RSA-PSK-AES256-GCM-SHA384
  • TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 β€” RSA-PSK-ARIA128-CBC-SHA256
  • TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 β€” RSA-PSK-ARIA128-GCM-SHA256
  • TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 β€” RSA-PSK-ARIA256-CBC-SHA384
  • TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 β€” RSA-PSK-ARIA256-GCM-SHA384
  • TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256 β€” RSA-PSK-CHACHA20-POLY1305
  • TLS_RSA_PSK_WITH_SM4_CCM_SM3 β€” RSA-PSK-SM4-CCM-SM3
  • TLS_RSA_PSK_WITH_SM4_GCM_SM3 β€” RSA-PSK-SM4-GCM-SM3

🌈 Other TLS v1.2 cipher suites 🌈

The remaining TLS v1.2 stragglers β€” the NULL ones, the RC4 ones, the 3DES ones, the anon DH ones, and the SM4 ones. Yes bestie, some of these are deeply cursed, but they're all still listed here so you know exactly what you're looking at:

  • TLS_RSA_WITH_NULL_MD5 β€” NULL-MD5
  • TLS_RSA_WITH_NULL_SHA β€” NULL-SHA
  • TLS_RSA_WITH_NULL_SHA256 β€” NULL-SHA256
  • TLS_RSA_WITH_RC4_128_MD5 β€” RC4-MD5
  • TLS_RSA_WITH_RC4_128_SHA β€” RC4-SHA
  • TLS_RSA_WITH_IDEA_CBC_SHA β€” IDEA-CBC-SHA
  • TLS_RSA_WITH_3DES_EDE_CBC_SHA β€” DES-CBC3-SHA
  • TLS_RSA_WITH_SM4_CCM_SM3 β€” SM4-CCM-SM3
  • TLS_RSA_WITH_SM4_GCM_SM3 β€” SM4-GCM-SM3
  • TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA β€” DHE-DSS-DES-CBC3-SHA
  • TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA β€” DHE-RSA-DES-CBC3-SHA
  • TLS_DHE_RSA_WITH_SM4_CCM_SM3 β€” DHE-RSA-SM4-CCM-SM3
  • TLS_DHE_RSA_WITH_SM4_GCM_SM3 β€” DHE-RSA-SM4-GCM-SM3
  • TLS_DH_anon_WITH_RC4_128_MD5 β€” ADH-RC4-MD5
  • TLS_DH_anon_WITH_3DES_EDE_CBC_SHA β€” ADH-DES-CBC3-SHA

πŸ‘‘ TLS v1.3 cipher suites πŸ‘‘

TLS v1.3 keeps it simple, honestly β€” the "name" and the "long name" are literally the same string here, so no alias drama:

  • TLS_AES_128_GCM_SHA256 β€” TLS_AES_128_GCM_SHA256
  • TLS_AES_256_GCM_SHA384 β€” TLS_AES_256_GCM_SHA384
  • TLS_CHACHA20_POLY1305_SHA256 β€” TLS_CHACHA20_POLY1305_SHA256
  • TLS_AES_128_CCM_SHA256 β€” TLS_AES_128_CCM_SHA256
  • TLS_AES_128_CCM_8_SHA256 β€” TLS_AES_128_CCM_8_SHA256
  • TLS_SM4_GCM_SM3 β€” TLS_SM4_GCM_SM3
  • TLS_SM4_CCM_SM3 β€” TLS_SM4_CCM_SM3

✨ TLS v1.3 integrity-only cipher suites according to RFC 9150 ✨

  • TLS_SHA256_SHA256 β€” TLS_SHA256_SHA256
  • TLS_SHA384_SHA384 β€” TLS_SHA384_SHA384
Okay so heads up, bestie, this one matters: these ciphers are purely HMAC based and do not provide any confidentiality and thus are disabled by default. These ciphers are only available at security level 0. (Translation: they protect that nobody tampered with your bytes, and absolutely nothing about who can read them. Do not use these thinking you got privacy. You did not. πŸ’€)

🫢 "EDH-" aliases to "DHE-" names for backward compatibility 🫢

For the old-school girlies β€” the following names are accepted by older releases:

  • EDH-RSA-DES-CBC3-SHA β€” alias of DHE-RSA-DES-CBC3-SHA
  • EDH-DSS-DES-CBC3-SHA β€” alias of DHE-DSS-DES-CBC3-SHA

πŸ“Œ NOTES πŸ“Œ

Some compiled versions of OpenSSL may not include all the ciphers listed here because some ciphers were excluded at compile time. So if a cipher you swear exists is ghosting you, that's probably why β€” it got compiled out. πŸ™ˆ


πŸ’… EXAMPLES πŸ’…

Verbose listing of all OpenSSL ciphers including NULL ciphers:

openssl ciphers -v 'ALL:eNULL'

Include all ciphers except NULL and anonymous DH then sort by strength:

openssl ciphers -v 'ALL:!ADH:@STRENGTH'

Include all ciphers except ones with no encryption (eNULL) or no authentication (aNULL):

openssl ciphers -v 'ALL:!aNULL'

Include only AES ciphers and then place RSA ciphers last:

openssl ciphers -v 'AES:+RSA'

Include all ciphers with RSA authentication but leave out ciphers without encryption.

openssl ciphers -v 'RSA:!COMPLEMENTOFALL'

Set security level to 2 and display all ciphers consistent with level 2:

openssl ciphers -s -v 'ALL:@SECLEVEL=2'

πŸ” SEE ALSO πŸ”


πŸ“œ HISTORY πŸ“œ

  • The -V option was added in OpenSSL 1.0.0.
  • The -stdname is only available if OpenSSL is built with tracing enabled (enable-ssl-trace argument to Configure) before OpenSSL 1.1.1.
  • The -convert option was added in OpenSSL 1.1.1.
  • Support for standard IANA names in cipher lists was added in OpenSSL 3.2.0.
  • The support for TLS v1.3 integrity-only cipher suites was added in OpenSSL 3.4.
  • The list of TLS 1.3 ciphersuites val and TLS 1.2 ciphers cipherlist were case-sensitive prior to OpenSSL 4.0.

Copyright 2000-2026 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <https://www.openssl.org/source/license.html>.


and that's the whole page, bestie β€” you read every single cipher name and I'm so proud of you πŸ₯ΉπŸ’–

This was OPENSSL-CIPHERS(1SSL) from OpenSSL 4.0.3, dated 2026-09-29. Go secure something cute. Periodt. πŸ‘‘βœ¨

πŸ“¦ where this page comes from