วิธีการแปลง ssl ciphers ให้เป็นฟอร์แมทฟอร์แมต?


12

เอกสาร SSL อย่างเป็นทางการรายการยันต์ในรูปแบบที่แตกต่างจากขดใช้เวลา ตัวอย่างเช่นถ้าผมต้องการที่ขดที่จะใช้ตัวเลข TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA curl --ciphers ecdhe_rsa_3des_shaผมต้องผ่านมัน ฉันรู้ว่าการแมปบางอย่างเป็นเช่นไร แต่ไม่ใช่ทั้งหมด - ตัวอย่างเช่นฉันต้องส่งต่อการขดเพื่อให้ใช้การเข้ารหัส TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 อย่างไร

มีทุกที่ที่ฉันสามารถหาเอกสารที่แสดงว่าชื่อรหัสในแผนที่ ssl docs กับชื่อตัวเลขที่ขดยอมรับ?

แก้ไข:ในที่สุดฉันก็ค้นพบว่า curl ของฉันได้รับการสนับสนุนโดย NSS ไม่ใช่ OpenSSL และปัญหานี้เกิดขึ้นเนื่องจากไม่มีเอกสารที่ดีเกี่ยวกับการใช้ curl ที่ NSS ได้รับการสนับสนุนในขณะที่มันต้องการอาร์กิวเมนต์ที่แตกต่างจาก OpenSSL เพื่อใช้ตัวเลขเดียวกัน ดังนั้นคำถามของฉันเฉพาะกับ NSS

คำตอบ:


17

ไม่มีเอกสารครอบคลุมการแปลงทั้งหมดระหว่างชื่อของตัวเลขและชื่อที่ curl คาดว่าจะเป็นข้อโต้แย้ง

โชคดีที่ขดเป็นแหล่งที่มาเปิดและการทำแผนที่เป็นที่มีอยู่ในรหัสที่มา

เพื่อประโยชน์ของผู้ค้นหาในอนาคตฉันได้ทำซ้ำอย่างประณีตมากขึ้นที่นี่:

ชุดรหัส SSL2

<argument>                 <name>
rc4                        SSL_EN_RC4_128_WITH_MD5
rc4-md5                    SSL_EN_RC4_128_WITH_MD5
rc4export                  SSL_EN_RC4_128_EXPORT40_WITH_MD5
rc2                        SSL_EN_RC2_128_CBC_WITH_MD5
rc2export                  SSL_EN_RC2_128_CBC_EXPORT40_WITH_MD5
des                        SSL_EN_DES_64_CBC_WITH_MD5
desede3                    SSL_EN_DES_192_EDE3_CBC_WITH_MD5

ชุดรหัส SSL3 / TLS

<argument>                 <name>
rsa_rc4_128_md5            SSL_RSA_WITH_RC4_128_MD5
rsa_rc4_128_sha            SSL_RSA_WITH_RC4_128_SHA
rsa_3des_sha               SSL_RSA_WITH_3DES_EDE_CBC_SHA
rsa_des_sha                SSL_RSA_WITH_DES_CBC_SHA
rsa_rc4_40_md5             SSL_RSA_EXPORT_WITH_RC4_40_MD5
rsa_rc2_40_md5             SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
rsa_null_md5               SSL_RSA_WITH_NULL_MD5
rsa_null_sha               SSL_RSA_WITH_NULL_SHA
fips_3des_sha              SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA
fips_des_sha               SSL_RSA_FIPS_WITH_DES_CBC_SHA
fortezza                   SSL_FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA
fortezza_rc4_128_sha       SSL_FORTEZZA_DMS_WITH_RC4_128_SHA
fortezza_null              SSL_FORTEZZA_DMS_WITH_NULL_SHA

TLS 1.0: ชุดตัวเข้ารหัส 56 บิตที่ส่งออกได้

<argument>                 <name>
rsa_des_56_sha             TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA
rsa_rc4_56_sha             TLS_RSA_EXPORT1024_WITH_RC4_56_SHA

ยันต์ AES

<argument>                 <name>
dhe_dss_aes_128_cbc_sha    TLS_DHE_DSS_WITH_AES_128_CBC_SHA
dhe_dss_aes_256_cbc_sha    TLS_DHE_DSS_WITH_AES_256_CBC_SHA
dhe_rsa_aes_128_cbc_sha    TLS_DHE_RSA_WITH_AES_128_CBC_SHA
dhe_rsa_aes_256_cbc_sha    TLS_DHE_RSA_WITH_AES_256_CBC_SHA
rsa_aes_128_sha            TLS_RSA_WITH_AES_128_CBC_SHA
rsa_aes_256_sha            TLS_RSA_WITH_AES_256_CBC_SHA

ยันต์ ECC

<argument>                 <name>
ecdh_ecdsa_null_sha        TLS_ECDH_ECDSA_WITH_NULL_SHA
ecdh_ecdsa_rc4_128_sha     TLS_ECDH_ECDSA_WITH_RC4_128_SHA
ecdh_ecdsa_3des_sha        TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
ecdh_ecdsa_aes_128_sha     TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
ecdh_ecdsa_aes_256_sha     TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
ecdhe_ecdsa_null_sha       TLS_ECDHE_ECDSA_WITH_NULL_SHA
ecdhe_ecdsa_rc4_128_sha    TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
ecdhe_ecdsa_3des_sha       TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
ecdhe_ecdsa_aes_128_sha    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
ecdhe_ecdsa_aes_256_sha    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
ecdh_rsa_null_sha          TLS_ECDH_RSA_WITH_NULL_SHA
ecdh_rsa_128_sha           TLS_ECDH_RSA_WITH_RC4_128_SHA
ecdh_rsa_3des_sha          TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
ecdh_rsa_aes_128_sha       TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
ecdh_rsa_aes_256_sha       TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
echde_rsa_null             TLS_ECDHE_RSA_WITH_NULL_SHA
ecdhe_rsa_rc4_128_sha      TLS_ECDHE_RSA_WITH_RC4_128_SHA
ecdhe_rsa_3des_sha         TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
ecdhe_rsa_aes_128_sha      TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
ecdhe_rsa_aes_256_sha      TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
ecdh_anon_null_sha         TLS_ECDH_anon_WITH_NULL_SHA
ecdh_anon_rc4_128sha       TLS_ECDH_anon_WITH_RC4_128_SHA
ecdh_anon_3des_sha         TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA
ecdh_anon_aes_128_sha      TLS_ECDH_anon_WITH_AES_128_CBC_SHA
ecdh_anon_aes_256_sha      TLS_ECDH_anon_WITH_AES_256_CBC_SHA

ใหม่ชุดรหัส HMAC-SHA256 ที่ระบุใน RFC

<argument>                 <name>
rsa_null_sha_256                TLS_RSA_WITH_NULL_SHA256
rsa_aes_128_cbc_sha_256         TLS_RSA_WITH_AES_128_CBC_SHA256
rsa_aes_256_cbc_sha_256         TLS_RSA_WITH_AES_256_CBC_SHA256
dhe_rsa_aes_128_cbc_sha_256     TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
dhe_rsa_aes_256_cbc_sha_256     TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
ecdhe_ecdsa_aes_128_cbc_sha_256 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
ecdhe_rsa_aes_128_cbc_sha_256   TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

ชุดเข้ารหัส AES GCM ใน RFC 5288 และ RFC 5289

<argument>                 <name>
rsa_aes_128_gcm_sha_256         TLS_RSA_WITH_AES_128_GCM_SHA256
dhe_rsa_aes_128_gcm_sha_256     TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
dhe_dss_aes_128_gcm_sha_256     TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
ecdhe_ecdsa_aes_128_gcm_sha_256 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
ecdh_ecdsa_aes_128_gcm_sha_256  TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
ecdhe_rsa_aes_128_gcm_sha_256   TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
ecdh_rsa_aes_128_gcm_sha_256    TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256

ดังนั้นหากคุณต้องการใช้ตัวเลขTLS_DHE_RSA_WITH_AES_128_CBC_SHAคำสั่งจะเป็น:

curl --ciphers dhe_rsa_aes_128_cbc_sha <url>

เพื่อระบุหลาย ciphers ให้แยกรายการด้วยเครื่องหมายจุลภาค ดังนั้นหากคุณต้องการใช้รหัสTLS_ECDH_RSA_WITH_AES_128_GCM_SHA256เช่นกันคำสั่งจะเป็น:

curl --ciphers dhe_rsa_aes_128_cbc_sha,ecdh_rsa_aes_128_gcm_sha_256 <url>

ในการดูรายการของยันต์ที่ใช้งานอยู่คุณจะต้องใช้บริการภายนอก - เช่นนี้

curl --ciphers ecdhe_rsa_aes_256_sha https://www.howsmyssl.com/a/check

แม้ว่า NB บริการดังกล่าวจะไม่ยอมรับการเข้ารหัสทั้งหมดซึ่งหมายความว่าหากคุณ จำกัด การเชื่อมต่อกับรหัสเดียวที่ไม่ได้ใช้งานคุณจะได้รับข้อผิดพลาด "ไม่สามารถสื่อสารอย่างปลอดภัยกับเพียร์: ไม่มีอัลกอริธึมการเข้ารหัสทั่วไป"


คำตอบที่ยอดเยี่ยมขอบคุณ! ฉันเพิ่งแนะนำการแก้ไขเล็กน้อยเพื่อสาธิตวิธีระบุ ciphers หลายรายการ
Dallin

2

curl formatไม่มี รูปแบบของการเข้ารหัสที่ใช้โดย curl นั้นขึ้นอยู่กับแบ็กเอนด์ซึ่งมีอย่างน้อย NSS, GnuTLS, SecureTransport, SChannel, OpenSSL

แต่ดูเหมือนว่าคุณกำลังขอไวยากรณ์ OpenSSL ในกรณีนี้ดูhttps://www.openssl.org/docs/apps/ciphers.html#CIPHER-SUITE-NAMESสำหรับการแปลระหว่างชื่อตัวเลข


ไม่ฉันกำลังมองหา NSS อยู่ แต่เอกสารทางการของ NSS ไม่มีรายการทั้งหมด
Benubird

0

หากคุณได้รับข้อผิดพลาด "รายการการตั้งค่าการเข้ารหัสที่ล้มเหลว"

ตรวจสอบเอกสารอย่างเป็นทางการที่นี่

ตรวจสอบให้แน่ใจว่าคุณเลือกชื่อที่ถูกต้องสำหรับไลบรารีความปลอดภัยของแบ็กเอนด์ของคุณ คุณสามารถตรวจสอบห้องสมุดที่ขึ้นอยู่กับขด

curl --version
curl 7.51.0 (x86_64-apple-darwin16.0.0) libcurl/7.51.0 OpenSSL/1.0.2n zlib/1.2.8 nghttp2/1.16.0
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.