Home | History | Annotate | Download | only in docs
      1 # Ciphers
      2 
      3 With curl's options
      4 [`CURLOPT_SSL_CIPHER_LIST`](https://curl.haxx.se/libcurl/c/CURLOPT_SSL_CIPHER_LIST.html)
      5 and
      6 [`--ciphers`](https://curl.haxx.se/docs/manpage.html#--ciphers)
      7 users can control which ciphers to consider when negotiating TLS connections.
      8 
      9 TLS 1.3 ciphers are supported since curl 7.61 with options
     10 [`CURLOPT_TLS13_CIPHERS`](https://curl.haxx.se/libcurl/c/CURLOPT_TLS13_CIPHERS.html)
     11 and
     12 [`--tls13-ciphers`](https://curl.haxx.se/docs/manpage.html#--tls13-ciphers)
     13 .
     14 
     15 The names of the known ciphers differ depending on which TLS backend that
     16 libcurl was built to use. This is an attempt to list known cipher names.
     17 
     18 ## OpenSSL
     19 
     20 (based on [OpenSSL docs](https://www.openssl.org/docs/man1.1.0/apps/ciphers.html))
     21 
     22 When specifying multiple cipher names, separate them with colon (`:`).
     23 
     24 ### SSL3 cipher suites
     25 
     26 `NULL-MD5`
     27 `NULL-SHA`
     28 `RC4-MD5`
     29 `RC4-SHA`
     30 `IDEA-CBC-SHA`
     31 `DES-CBC3-SHA`
     32 `DH-DSS-DES-CBC3-SHA`
     33 `DH-RSA-DES-CBC3-SHA`
     34 `DHE-DSS-DES-CBC3-SHA`
     35 `DHE-RSA-DES-CBC3-SHA`
     36 `ADH-RC4-MD5`
     37 `ADH-DES-CBC3-SHA`
     38 
     39 ### TLS v1.0 cipher suites
     40 
     41 `NULL-MD5`
     42 `NULL-SHA`
     43 `RC4-MD5`
     44 `RC4-SHA`
     45 `IDEA-CBC-SHA`
     46 `DES-CBC3-SHA`
     47 `DHE-DSS-DES-CBC3-SHA`
     48 `DHE-RSA-DES-CBC3-SHA`
     49 `ADH-RC4-MD5`
     50 `ADH-DES-CBC3-SHA`
     51 
     52 ### AES ciphersuites from RFC3268, extending TLS v1.0
     53 
     54 `AES128-SHA`
     55 `AES256-SHA`
     56 `DH-DSS-AES128-SHA`
     57 `DH-DSS-AES256-SHA`
     58 `DH-RSA-AES128-SHA`
     59 `DH-RSA-AES256-SHA`
     60 `DHE-DSS-AES128-SHA`
     61 `DHE-DSS-AES256-SHA`
     62 `DHE-RSA-AES128-SHA`
     63 `DHE-RSA-AES256-SHA`
     64 `ADH-AES128-SHA`
     65 `ADH-AES256-SHA`
     66 
     67 ### SEED ciphersuites from RFC4162, extending TLS v1.0
     68 
     69 `SEED-SHA`
     70 `DH-DSS-SEED-SHA`
     71 `DH-RSA-SEED-SHA`
     72 `DHE-DSS-SEED-SHA`
     73 `DHE-RSA-SEED-SHA`
     74 `ADH-SEED-SHA`
     75 
     76 ### GOST ciphersuites, extending TLS v1.0
     77 
     78 `GOST94-GOST89-GOST89`
     79 `GOST2001-GOST89-GOST89`
     80 `GOST94-NULL-GOST94`
     81 `GOST2001-NULL-GOST94`
     82 
     83 ### Elliptic curve cipher suites
     84 
     85 `ECDHE-RSA-NULL-SHA`
     86 `ECDHE-RSA-RC4-SHA`
     87 `ECDHE-RSA-DES-CBC3-SHA`
     88 `ECDHE-RSA-AES128-SHA`
     89 `ECDHE-RSA-AES256-SHA`
     90 `ECDHE-ECDSA-NULL-SHA`
     91 `ECDHE-ECDSA-RC4-SHA`
     92 `ECDHE-ECDSA-DES-CBC3-SHA`
     93 `ECDHE-ECDSA-AES128-SHA`
     94 `ECDHE-ECDSA-AES256-SHA`
     95 `AECDH-NULL-SHA`
     96 `AECDH-RC4-SHA`
     97 `AECDH-DES-CBC3-SHA`
     98 `AECDH-AES128-SHA`
     99 `AECDH-AES256-SHA`
    100 
    101 ### TLS v1.2 cipher suites
    102 
    103 `NULL-SHA256`
    104 `AES128-SHA256`
    105 `AES256-SHA256`
    106 `AES128-GCM-SHA256`
    107 `AES256-GCM-SHA384`
    108 `DH-RSA-AES128-SHA256`
    109 `DH-RSA-AES256-SHA256`
    110 `DH-RSA-AES128-GCM-SHA256`
    111 `DH-RSA-AES256-GCM-SHA384`
    112 `DH-DSS-AES128-SHA256`
    113 `DH-DSS-AES256-SHA256`
    114 `DH-DSS-AES128-GCM-SHA256`
    115 `DH-DSS-AES256-GCM-SHA384`
    116 `DHE-RSA-AES128-SHA256`
    117 `DHE-RSA-AES256-SHA256`
    118 `DHE-RSA-AES128-GCM-SHA256`
    119 `DHE-RSA-AES256-GCM-SHA384`
    120 `DHE-DSS-AES128-SHA256`
    121 `DHE-DSS-AES256-SHA256`
    122 `DHE-DSS-AES128-GCM-SHA256`
    123 `DHE-DSS-AES256-GCM-SHA384`
    124 `ECDHE-RSA-AES128-SHA256`
    125 `ECDHE-RSA-AES256-SHA384`
    126 `ECDHE-RSA-AES128-GCM-SHA256`
    127 `ECDHE-RSA-AES256-GCM-SHA384`
    128 `ECDHE-ECDSA-AES128-SHA256`
    129 `ECDHE-ECDSA-AES256-SHA384`
    130 `ECDHE-ECDSA-AES128-GCM-SHA256`
    131 `ECDHE-ECDSA-AES256-GCM-SHA384`
    132 `ADH-AES128-SHA256`
    133 `ADH-AES256-SHA256`
    134 `ADH-AES128-GCM-SHA256`
    135 `ADH-AES256-GCM-SHA384`
    136 `AES128-CCM`
    137 `AES256-CCM`
    138 `DHE-RSA-AES128-CCM`
    139 `DHE-RSA-AES256-CCM`
    140 `AES128-CCM8`
    141 `AES256-CCM8`
    142 `DHE-RSA-AES128-CCM8`
    143 `DHE-RSA-AES256-CCM8`
    144 `ECDHE-ECDSA-AES128-CCM`
    145 `ECDHE-ECDSA-AES256-CCM`
    146 `ECDHE-ECDSA-AES128-CCM8`
    147 `ECDHE-ECDSA-AES256-CCM8`
    148 
    149 ### Camellia HMAC-Based ciphersuites from RFC6367, extending TLS v1.2
    150 
    151 `ECDHE-ECDSA-CAMELLIA128-SHA256`
    152 `ECDHE-ECDSA-CAMELLIA256-SHA384`
    153 `ECDHE-RSA-CAMELLIA128-SHA256`
    154 `ECDHE-RSA-CAMELLIA256-SHA384`
    155 
    156 ### TLS 1.3 cipher suites
    157 
    158 (Note these ciphers are set with `CURLOPT_TLS13_CIPHERS` and `--tls13-ciphers`)
    159 
    160 `TLS_AES_256_GCM_SHA384`
    161 `TLS_CHACHA20_POLY1305_SHA256`
    162 `TLS_AES_128_GCM_SHA256`
    163 `TLS_AES_128_CCM_8_SHA256`
    164 `TLS_AES_128_CCM_SHA256`
    165 
    166 ## NSS
    167 
    168 ### Totally insecure
    169 
    170 `rc4`
    171 `rc4-md5`
    172 `rc4export`
    173 `rc2`
    174 `rc2export`
    175 `des`
    176 `desede3`
    177 
    178 ###  SSL3/TLS cipher suites
    179 
    180 `rsa_rc4_128_md5`
    181 `rsa_rc4_128_sha`
    182 `rsa_3des_sha`
    183 `rsa_des_sha`
    184 `rsa_rc4_40_md5`
    185 `rsa_rc2_40_md5`
    186 `rsa_null_md5`
    187 `rsa_null_sha`
    188 `fips_3des_sha`
    189 `fips_des_sha`
    190 `fortezza`
    191 `fortezza_rc4_128_sha`
    192 `fortezza_null`
    193 
    194 ### TLS 1.0 Exportable 56-bit Cipher Suites
    195 
    196 `rsa_des_56_sha`
    197 `rsa_rc4_56_sha`
    198 
    199 ### AES ciphers
    200 
    201 `dhe_dss_aes_128_cbc_sha`
    202 `dhe_dss_aes_256_cbc_sha`
    203 `dhe_rsa_aes_128_cbc_sha`
    204 `dhe_rsa_aes_256_cbc_sha`
    205 `rsa_aes_128_sha`
    206 `rsa_aes_256_sha`
    207 
    208 ### ECC ciphers
    209 
    210 `ecdh_ecdsa_null_sha`
    211 `ecdh_ecdsa_rc4_128_sha`
    212 `ecdh_ecdsa_3des_sha`
    213 `ecdh_ecdsa_aes_128_sha`
    214 `ecdh_ecdsa_aes_256_sha`
    215 `ecdhe_ecdsa_null_sha`
    216 `ecdhe_ecdsa_rc4_128_sha`
    217 `ecdhe_ecdsa_3des_sha`
    218 `ecdhe_ecdsa_aes_128_sha`
    219 `ecdhe_ecdsa_aes_256_sha`
    220 `ecdh_rsa_null_sha`
    221 `ecdh_rsa_128_sha`
    222 `ecdh_rsa_3des_sha`
    223 `ecdh_rsa_aes_128_sha`
    224 `ecdh_rsa_aes_256_sha`
    225 `ecdhe_rsa_null`
    226 `ecdhe_rsa_rc4_128_sha`
    227 `ecdhe_rsa_3des_sha`
    228 `ecdhe_rsa_aes_128_sha`
    229 `ecdhe_rsa_aes_256_sha`
    230 `ecdh_anon_null_sha`
    231 `ecdh_anon_rc4_128sha`
    232 `ecdh_anon_3des_sha`
    233 `ecdh_anon_aes_128_sha`
    234 `ecdh_anon_aes_256_sha`
    235 
    236 ### HMAC-SHA256 cipher suites
    237 
    238 `rsa_null_sha_256`
    239 `rsa_aes_128_cbc_sha_256`
    240 `rsa_aes_256_cbc_sha_256`
    241 `dhe_rsa_aes_128_cbc_sha_256`
    242 `dhe_rsa_aes_256_cbc_sha_256`
    243 `ecdhe_ecdsa_aes_128_cbc_sha_256`
    244 `ecdhe_rsa_aes_128_cbc_sha_256`
    245 
    246 ### AES GCM cipher suites in RFC 5288 and RFC 5289
    247 
    248 `rsa_aes_128_gcm_sha_256`
    249 `dhe_rsa_aes_128_gcm_sha_256`
    250 `dhe_dss_aes_128_gcm_sha_256`
    251 `ecdhe_ecdsa_aes_128_gcm_sha_256`
    252 `ecdh_ecdsa_aes_128_gcm_sha_256`
    253 `ecdhe_rsa_aes_128_gcm_sha_256`
    254 `ecdh_rsa_aes_128_gcm_sha_256`
    255 
    256 ### cipher suites using SHA384
    257 
    258 `rsa_aes_256_gcm_sha_384`
    259 `dhe_rsa_aes_256_gcm_sha_384`
    260 `dhe_dss_aes_256_gcm_sha_384`
    261 `ecdhe_ecdsa_aes_256_sha_384`
    262 `ecdhe_rsa_aes_256_sha_384`
    263 `ecdhe_ecdsa_aes_256_gcm_sha_384`
    264 `ecdhe_rsa_aes_256_gcm_sha_384`
    265 
    266 ### chacha20-poly1305 cipher suites
    267 
    268 `ecdhe_rsa_chacha20_poly1305_sha_256`
    269 `ecdhe_ecdsa_chacha20_poly1305_sha_256`
    270 `dhe_rsa_chacha20_poly1305_sha_256`
    271 
    272 ## GSKit
    273 
    274 Ciphers are internally defined as numeric codes (https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/apis/gsk_attribute_set_buffer.htm),
    275 but libcurl maps them to the following case-insensitive names.
    276 
    277 ### SSL2 cipher suites (insecure: disabled by default)
    278 
    279 `rc2-md5`
    280 `rc4-md5`
    281 `exp-rc2-md5`
    282 `exp-rc4-md5`
    283 `des-cbc-md5`
    284 `des-cbc3-md5`
    285 
    286 ### SSL3 cipher suites
    287 
    288 `null-md5`
    289 `null-sha`
    290 `rc4-md5`
    291 `rc4-sha`
    292 `exp-rc2-cbc-md5`
    293 `exp-rc4-md5`
    294 `exp-des-cbc-sha`
    295 `des-cbc3-sha`
    296 
    297 ### TLS v1.0 cipher suites
    298 
    299 `null-md5`
    300 `null-sha`
    301 `rc4-md5`
    302 `rc4-sha`
    303 `exp-rc2-cbc-md5`
    304 `exp-rc4-md5`
    305 `exp-des-cbc-sha`
    306 `des-cbc3-sha`
    307 `aes128-sha`
    308 `aes256-sha`
    309 
    310 ### TLS v1.1 cipher suites
    311 
    312 `null-md5`
    313 `null-sha`
    314 `rc4-md5`
    315 `rc4-sha`
    316 `exp-des-cbc-sha`
    317 `des-cbc3-sha`
    318 `aes128-sha`
    319 `aes256-sha`
    320 
    321 ### TLS v1.2 cipher suites
    322 
    323 `null-md5`
    324 `null-sha`
    325 `null-sha256`
    326 `rc4-md5`
    327 `rc4-sha`
    328 `des-cbc3-sha`
    329 `aes128-sha`
    330 `aes256-sha`
    331 `aes128-sha256`
    332 `aes256-sha256`
    333 `aes128-gcm-sha256`
    334 `aes256-gcm-sha384`
    335 
    336 ## WolfSSL
    337 
    338 `RC4-SHA`,
    339 `RC4-MD5`,
    340 `DES-CBC3-SHA`,
    341 `AES128-SHA`,
    342 `AES256-SHA`,
    343 `NULL-SHA`,
    344 `NULL-SHA256`,
    345 `DHE-RSA-AES128-SHA`,
    346 `DHE-RSA-AES256-SHA`,
    347 `DHE-PSK-AES256-GCM-SHA384`,
    348 `DHE-PSK-AES128-GCM-SHA256`,
    349 `PSK-AES256-GCM-SHA384`,
    350 `PSK-AES128-GCM-SHA256`,
    351 `DHE-PSK-AES256-CBC-SHA384`,
    352 `DHE-PSK-AES128-CBC-SHA256`,
    353 `PSK-AES256-CBC-SHA384`,
    354 `PSK-AES128-CBC-SHA256`,
    355 `PSK-AES128-CBC-SHA`,
    356 `PSK-AES256-CBC-SHA`,
    357 `DHE-PSK-AES128-CCM`,
    358 `DHE-PSK-AES256-CCM`,
    359 `PSK-AES128-CCM`,
    360 `PSK-AES256-CCM`,
    361 `PSK-AES128-CCM-8`,
    362 `PSK-AES256-CCM-8`,
    363 `DHE-PSK-NULL-SHA384`,
    364 `DHE-PSK-NULL-SHA256`,
    365 `PSK-NULL-SHA384`,
    366 `PSK-NULL-SHA256`,
    367 `PSK-NULL-SHA`,
    368 `HC128-MD5`,
    369 `HC128-SHA`,
    370 `HC128-B2B256`,
    371 `AES128-B2B256`,
    372 `AES256-B2B256`,
    373 `RABBIT-SHA`,
    374 `NTRU-RC4-SHA`,
    375 `NTRU-DES-CBC3-SHA`,
    376 `NTRU-AES128-SHA`,
    377 `NTRU-AES256-SHA`,
    378 `AES128-CCM-8`,
    379 `AES256-CCM-8`,
    380 `ECDHE-ECDSA-AES128-CCM`,
    381 `ECDHE-ECDSA-AES128-CCM-8`,
    382 `ECDHE-ECDSA-AES256-CCM-8`,
    383 `ECDHE-RSA-AES128-SHA`,
    384 `ECDHE-RSA-AES256-SHA`,
    385 `ECDHE-ECDSA-AES128-SHA`,
    386 `ECDHE-ECDSA-AES256-SHA`,
    387 `ECDHE-RSA-RC4-SHA`,
    388 `ECDHE-RSA-DES-CBC3-SHA`,
    389 `ECDHE-ECDSA-RC4-SHA`,
    390 `ECDHE-ECDSA-DES-CBC3-SHA`,
    391 `AES128-SHA256`,
    392 `AES256-SHA256`,
    393 `DHE-RSA-AES128-SHA256`,
    394 `DHE-RSA-AES256-SHA256`,
    395 `ECDH-RSA-AES128-SHA`,
    396 `ECDH-RSA-AES256-SHA`,
    397 `ECDH-ECDSA-AES128-SHA`,
    398 `ECDH-ECDSA-AES256-SHA`,
    399 `ECDH-RSA-RC4-SHA`,
    400 `ECDH-RSA-DES-CBC3-SHA`,
    401 `ECDH-ECDSA-RC4-SHA`,
    402 `ECDH-ECDSA-DES-CBC3-SHA`,
    403 `AES128-GCM-SHA256`,
    404 `AES256-GCM-SHA384`,
    405 `DHE-RSA-AES128-GCM-SHA256`,
    406 `DHE-RSA-AES256-GCM-SHA384`,
    407 `ECDHE-RSA-AES128-GCM-SHA256`,
    408 `ECDHE-RSA-AES256-GCM-SHA384`,
    409 `ECDHE-ECDSA-AES128-GCM-SHA256`,
    410 `ECDHE-ECDSA-AES256-GCM-SHA384`,
    411 `ECDH-RSA-AES128-GCM-SHA256`,
    412 `ECDH-RSA-AES256-GCM-SHA384`,
    413 `ECDH-ECDSA-AES128-GCM-SHA256`,
    414 `ECDH-ECDSA-AES256-GCM-SHA384`,
    415 `CAMELLIA128-SHA`,
    416 `DHE-RSA-CAMELLIA128-SHA`,
    417 `CAMELLIA256-SHA`,
    418 `DHE-RSA-CAMELLIA256-SHA`,
    419 `CAMELLIA128-SHA256`,
    420 `DHE-RSA-CAMELLIA128-SHA256`,
    421 `CAMELLIA256-SHA256`,
    422 `DHE-RSA-CAMELLIA256-SHA256`,
    423 `ECDHE-RSA-AES128-SHA256`,
    424 `ECDHE-ECDSA-AES128-SHA256`,
    425 `ECDH-RSA-AES128-SHA256`,
    426 `ECDH-ECDSA-AES128-SHA256`,
    427 `ECDHE-RSA-AES256-SHA384`,
    428 `ECDHE-ECDSA-AES256-SHA384`,
    429 `ECDH-RSA-AES256-SHA384`,
    430 `ECDH-ECDSA-AES256-SHA384`,
    431 `ECDHE-RSA-CHACHA20-POLY1305`,
    432 `ECDHE-ECDSA-CHACHA20-POLY1305`,
    433 `DHE-RSA-CHACHA20-POLY1305`,
    434 `ECDHE-RSA-CHACHA20-POLY1305-OLD`,
    435 `ECDHE-ECDSA-CHACHA20-POLY1305-OLD`,
    436 `DHE-RSA-CHACHA20-POLY1305-OLD`,
    437 `ADH-AES128-SHA`,
    438 `QSH`,
    439 `RENEGOTIATION-INFO`,
    440 `IDEA-CBC-SHA`,
    441 `ECDHE-ECDSA-NULL-SHA`,
    442 `ECDHE-PSK-NULL-SHA256`,
    443 `ECDHE-PSK-AES128-CBC-SHA256`,
    444 `PSK-CHACHA20-POLY1305`,
    445 `ECDHE-PSK-CHACHA20-POLY1305`,
    446 `DHE-PSK-CHACHA20-POLY1305`,
    447 `EDH-RSA-DES-CBC3-SHA`,
    448 
    449 ## WinSSL
    450 
    451 WinSSL allows the enabling and disabling of encryption algorithms, but not specific ciphersuites. They are defined by Microsoft (https://msdn.microsoft.com/en-us/library/windows/desktop/aa375549(v=vs.85).aspx)
    452 
    453 `CALG_MD2`,
    454 `CALG_MD4`,
    455 `CALG_MD5`,
    456 `CALG_SHA`,
    457 `CALG_SHA1`,
    458 `CALG_MAC`,
    459 `CALG_RSA_SIGN`,
    460 `CALG_DSS_SIGN`,
    461 `CALG_NO_SIGN`,
    462 `CALG_RSA_KEYX`,
    463 `CALG_DES`,
    464 `CALG_3DES_112`,
    465 `CALG_3DES`,
    466 `CALG_DESX`,
    467 `CALG_RC2`,
    468 `CALG_RC4`,
    469 `CALG_SEAL`,
    470 `CALG_DH_SF`,
    471 `CALG_DH_EPHEM`,
    472 `CALG_AGREEDKEY_ANY`,
    473 `CALG_HUGHES_MD5`,
    474 `CALG_SKIPJACK`,
    475 `CALG_TEK`,
    476 `CALG_CYLINK_MEK`,
    477 `CALG_SSL3_SHAMD5`,
    478 `CALG_SSL3_MASTER`,
    479 `CALG_SCHANNEL_MASTER_HASH`,
    480 `CALG_SCHANNEL_MAC_KEY`,
    481 `CALG_SCHANNEL_ENC_KEY`,
    482 `CALG_PCT1_MASTER`,
    483 `CALG_SSL2_MASTER`,
    484 `CALG_TLS1_MASTER`,
    485 `CALG_RC5`,
    486 `CALG_HMAC`,
    487 `CALG_TLS1PRF`,
    488 `CALG_HASH_REPLACE_OWF`,
    489 `CALG_AES_128`,
    490 `CALG_AES_192`,
    491 `CALG_AES_256`,
    492 `CALG_AES`,
    493 `CALG_SHA_256`,
    494 `CALG_SHA_384`,
    495 `CALG_SHA_512`,
    496 `CALG_ECDH`,
    497 `CALG_ECMQV`,
    498 `CALG_ECDSA`,
    499 `CALG_ECDH_EPHEM`,
    500