Wie konvertiere ich SSL-Chiffren in das Curl-Format?

12

Die offiziellen SSL-Dokumente listen Chiffren in einem anderen Format auf als Curl. Wenn ich beispielsweise möchte, dass Curl die Verschlüsselung TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA verwendet, muss ich sie übergeben curl --ciphers ecdhe_rsa_3des_sha. Ich weiß, was einige der Zuordnungen sind, aber nicht alle - was muss ich zum Beispiel zum Einrollen übergeben, damit es die Verschlüsselung TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 verwendet?

Gibt es irgendwo ein Dokument, das zeigt, wie die Chiffriernamen in den SSL-Dokumenten den Chiffrennamen zugeordnet sind, die Curl akzeptiert?

Bearbeiten: Ich habe schließlich festgestellt, dass meine Locke von NSS und nicht von OpenSSL unterstützt wird. Das Problem liegt insbesondere darin, dass es keine gute Dokumentation zur Verwendung von NSS-gestützter Locke gibt, obwohl für die Verwendung derselben Verschlüsselung ein anderes Argument erforderlich ist als für OpenSSL. Meine Frage ist also spezifisch für NSS.

Benubird
quelle

Antworten:

16

Es gibt keine Dokumentation, die alle Konvertierungen zwischen dem Namen der Chiffre und dem Namen, den Curl als Argument erwartet, abdeckt.

Glücklicherweise ist Curl Open Source und das Mapping ist im Quellcode verfügbar .

Zum Nutzen zukünftiger Sucher reproduziere ich es hier ordentlicher:

SSL2-Chiffresuiten

<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-Verschlüsselungssuiten

<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: Exportierbare 56-Bit-Cipher Suites.

<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-Chiffren.

<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-Chiffren.

<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

neue in RFC spezifizierte HMAC-SHA256-Chiffresuiten

<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-Verschlüsselungssuiten in RFC 5288 und 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

Wenn Sie also die Chiffre verwenden möchten, lautet TLS_DHE_RSA_WITH_AES_128_CBC_SHAder Befehl:

curl --ciphers dhe_rsa_aes_128_cbc_sha <url>

Trennen Sie die Liste durch Kommas, um mehrere Chiffren anzugeben. Wenn Sie also auch die Chiffre verwenden möchten, lautet TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256der Befehl:

curl --ciphers dhe_rsa_aes_128_cbc_sha,ecdh_rsa_aes_128_gcm_sha_256 <url>

Um eine Liste der von curl verwendeten Chiffren anzuzeigen, benötigen Sie einen externen Dienst - wie folgt:

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

Obwohl NB, dieser Dienst akzeptiert nicht alle Chiffren. Wenn Sie also die Verbindung auf nur eine nicht verwendete Chiffre beschränken, wird anstelle einer Antwort die Fehlermeldung "Kann nicht sicher mit Peer kommunizieren: kein gemeinsamer Verschlüsselungsalgorithmus" angezeigt.

Benubird
quelle
Fantastische Antwort, danke! Ich habe gerade eine kleine Änderung vorgeschlagen, um zu demonstrieren, wie mehrere Chiffren angegeben werden
Dallin
2

Es gibt keine curl format. Das Format der von curl verwendeten Chiffren hängt vom Backend ab, das mindestens NSS, GnuTLS, SecureTransport, SChannel, OpenSSL sein kann.

Es sieht jedoch so aus, als würden Sie nach der OpenSSL-Syntax fragen. In diesem Fall finden Sie unter https://www.openssl.org/docs/apps/ciphers.html#CIPHER-SUITE-NAMES eine Übersetzung zwischen den Chiffriernamen.

Steffen Ullrich
quelle
Nein, ich suche die NSS, aber die offiziellen Dokumente für NSS haben keine vollständige Liste.
Benubird
0

Wenn der Fehler "Verschlüsselungsliste fehlgeschlagen" angezeigt wird.

Überprüfen Sie das offizielle Dokument hier

Stellen Sie sicher, dass Sie den richtigen Namen für Ihre Backend-Sicherheitsbibliothek auswählen. Sie können die Curl-abhängige Bibliothek mit überprüfen

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
Ji Fang
quelle