SSL 암호를 curl 형식으로 변환하는 방법은 무엇입니까?


12

공식 SSL 워드 프로세서는 컬이 걸리는 것보다 다른 형식으로 암호를 나열합니다. 예를 들어 curl이 암호 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA를 사용하도록하려면 전달해야합니다 curl --ciphers ecdhe_rsa_3des_sha. 예를 들어, 암호 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256을 사용하기 위해 컬을 전달 해야하는 것은 무엇입니까?

SSL 문서의 암호 이름이 curl이 허용하는 암호 이름에 어떻게 매핑되는지 보여주는 문서가 어디 있습니까?

편집 : 결국 컬이 OpenSSL이 아닌 NSS에 의해 뒷받침되고 있음을 발견했으며 특히 NSS 기반 컬 사용에 대한 문서가 없기 때문에 OpenSSL과 동일한 암호를 사용하는 것과 다른 인수가 필요하기 때문에 문제가 발생합니다. 내 질문은 NSS에만 해당됩니다.

답변:


17

암호 이름과 curl이 인수로 기대하는 이름 사이의 모든 변환을 다루는 문서는 없습니다.

다행히 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

RFC에 지정된 새로운 HMAC-SHA256 암호화 제품군

<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

RFC 5288 및 RFC 5289의 AES GCM 암호화 제품군

<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

따라서 cipher를 사용하려는 경우 TLS_DHE_RSA_WITH_AES_128_CBC_SHA명령은 다음과 같습니다.

curl --ciphers dhe_rsa_aes_128_cbc_sha <url>

여러 암호를 지정하려면 목록을 쉼표로 구분하십시오. 따라서 암호를 사용하려는 경우 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이 사용하는 암호 목록을 보려면 다음과 같은 외부 서비스가 필요합니다.

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

NB, 해당 서비스가 모든 암호를 허용하지는 않습니다. 즉, 사용하지 않는 하나의 암호로만 연결을 제한하면 응답 대신 "피어와 안전하게 통신 할 수 없습니다 : 공통 암호화 알고리즘이 없습니다"라는 오류가 발생합니다.


환상적인 답변, 감사합니다! 방금 여러 암호를 지정하는 방법을 보여주는 작은 편집을 제안했습니다
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.