Làm thế nào để chuyển đổi mật mã ssl sang định dạng curl?


12

Các tài liệu ssl chính thức liệt kê các mật mã ở định dạng khác với curl mất. Chẳng hạn, nếu tôi muốn curl sử dụng mật mã TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, tôi phải vượt qua nó curl --ciphers ecdhe_rsa_3des_sha. Tôi biết một số ánh xạ là gì, nhưng không phải tất cả chúng - ví dụ, tôi phải chuyển cái gì để cuộn tròn để sử dụng mật mã TLS_DHE_RSA_WITH_AES_128_GCM_SHA256?

Có nơi nào tôi có thể tìm thấy một tài liệu cho thấy cách các tên mật mã trong ánh xạ tài liệu ssl đến các tên mật mã mà curl chấp nhận không?

Chỉnh sửa: Cuối cùng tôi đã phát hiện ra rằng curl của tôi được hỗ trợ bởi NSS, không phải OpenSSL và vấn đề cụ thể là do không có tài liệu tốt về việc sử dụng curl được hỗ trợ bởi NSS, trong khi nó yêu cầu một đối số khác với OpenSSL để sử dụng cùng một mật mã. Vì vậy, câu hỏi của tôi là cụ thể cho NSS.

Câu trả lời:


17

Không có tài liệu nào bao gồm tất cả các chuyển đổi giữa tên của mật mã và tên mà curl đang mong đợi như là một đối số.

May mắn thay, curl là mã nguồn mở, và các bản đồ có sẵn trong mã nguồn .

Vì lợi ích của những người tìm kiếm trong tương lai, tôi tái tạo nó gọn gàng hơn ở đây:

Bộ mật mã 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

Bộ mật mã 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: Bộ mật mã 56 bit có thể xuất.

<argument>                 <name>
rsa_des_56_sha             TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA
rsa_rc4_56_sha             TLS_RSA_EXPORT1024_WITH_RC4_56_SHA

Mật mã 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

Mật mã 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

bộ mật mã mới HMAC-SHA256 được chỉ định trong 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

Bộ mật mã AES GCM trong RFC 5288 và 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

Vì vậy, nếu bạn muốn sử dụng mật mã TLS_DHE_RSA_WITH_AES_128_CBC_SHA, lệnh sẽ là:

curl --ciphers dhe_rsa_aes_128_cbc_sha <url>

Để chỉ định nhiều mật mã, hãy tách danh sách bằng dấu phẩy. Vì vậy, nếu bạn cũng muốn sử dụng mật mã TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, lệnh sẽ là:

curl --ciphers dhe_rsa_aes_128_cbc_sha,ecdh_rsa_aes_128_gcm_sha_256 <url>

Để xem danh sách các mật mã mà curl đang sử dụng, bạn sẽ cần một dịch vụ bên ngoài - như thế này:

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

Mặc dù NB, dịch vụ đó không chấp nhận tất cả các mật mã, điều đó có nghĩa là nếu bạn giới hạn kết nối chỉ với một mật mã không được sử dụng, bạn sẽ gặp lỗi "Không thể giao tiếp an toàn với mạng ngang hàng: không có thuật toán mã hóa chung" thay vì phản hồi.


Câu trả lời tuyệt vời, thankyou! Tôi vừa đề xuất một chỉnh sửa nhỏ để trình bày cách chỉ định nhiều mật mã
Dallin

2

Không có curl format. Định dạng của các mật mã được sử dụng bởi curl phụ thuộc vào phụ trợ có thể ít nhất là NSS, GnuTLS, SecureTransport, SChannel, OpenSSL.

Nhưng có vẻ như bạn đang yêu cầu cú pháp OpenSSL. Trong trường hợp này, hãy xem https://www.openssl.org/docs/apps/ciphers.html#CIPHER-SUITE-NAMES để biết bản dịch giữa các tên mật mã.


Không, tôi đang tìm NSS, nhưng các tài liệu chính thức cho NSS không có danh sách đầy đủ.
Benubird

0

Nếu bạn gặp lỗi "danh sách mật mã cài đặt không thành công".

Kiểm tra tài liệu chính thức tại đây

Hãy chắc chắn rằng bạn chọn tên chính xác cho thư viện bảo mật phụ trợ của bạn. Bạn có thể kiểm tra thư viện phụ thuộc curl bằng cách

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.