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