web-dev-qa-db-fra.com

Comment passer la liste de chiffrement à OpenSSL s_client

Comment passer une liste de chiffrement à OpenSSL s_client programme?

Nous pouvons passer un seul chiffre par ceci:

openssl s_client -cipher 'ECDHE-RSA-AES256-SHA' -connect www.google.com:443

Mais comment passer une liste de plusieurs chiffres?

5
Rahul_cs12

Bien que la documentation d'OpenSSL manque beaucoup, cette partie est en fait bien documentée. Depuis la page de manuel de s_client :

-cipher cipherlist

cela permet de modifier la liste de chiffrement envoyée par le client. Bien que le serveur détermine quelle suite de chiffrement est utilisée, il doit prendre le premier chiffrement pris en charge dans la liste envoyée par le client. Voir la commande ciphers pour plus d'informations.

Et dans la mention documentation pour les chiffrements vous trouverez en fait beaucoup de détails sur le format de la liste de chiffrement, les chaînes de chiffrement et les noms des suites de chiffrement. En fait, la documentation est si complète qu'il vaut mieux la lire que de l'inclure dans cette réponse.

4
Steffen Ullrich

Comme Steffen Ullrich a mentionné , vous pouvez passer une liste de chiffres à l'option -cipher De s_client . Ce n'est pas un élément unique, mais une spécification et peut également être utilisé pour l'option nginx ssl_ciphers ou Apache SSLCipherSuite .

Vous pouvez passer plusieurs chiffres à l'aide d'un séparateur d'espace, de virgule ou de deux-points. Exemple:

openssl s_client -cipher ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-GCM-SHA384 \
    -connect example.com:443

La liste ci-dessus spécifie deux chiffres spécifiques. Un groupe de chiffres peut également être transmis. Voici un exemple de spécification de liste de chiffrement qui nécessite un accord de clé ECDH emphérique authentifiée (ECDH), RSA pour l'authentification et uniquement des suites de chiffrement qui sont considérées comme un chiffrement "élevé":

openssl s_client -cipher ECDH+aRSA+HIGH -connect example.com:443

À quoi cela s'étend-il? La commande openssl ciphers Peut être utilisée à cet effet:

$ openssl ciphers ECDH+aRSA+HIGH
ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA

ou plus verbeusement:

$ openssl ciphers -v ECDH+aRSA+HIGH
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA384
ECDHE-RSA-AES256-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA1
ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(128) Mac=AEAD
ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA256
ECDHE-RSA-AES128-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA1
ECDHE-RSA-DES-CBC3-SHA  SSLv3 Kx=ECDH     Au=RSA  Enc=3DES(168) Mac=SHA1

Pour plus d'informations, lisez la page de manuel ciphers .

5
Lekensteyn

Il a exactement la même syntaxe, par exemple. SSLCipherSuite paramètre de configuration dans Apache, ou de nombreux commutateurs de configuration similaires. Exemple de liste: EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:!SSLv2:!SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA

Notez les caractères importants:

:
+
!
3
Tomasz Klim