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?
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 là que de l'inclure dans cette réponse.
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
.
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:
:
+
!