table of contents
S_CLIENT(1SSL) | OpenSSL | S_CLIENT(1SSL) |
NOM¶
s_client - programme client SSL ou TLS
SYNOPSIS¶
openssl s_client [-connect hôte:port] [-servername nom] [-verify profondeur] [-verify_return_error] [-cert fichier] [-certform DER|PEM] [-key fichier] [-keyform DER|PEM] [-pass param] [-CApath répertoire] [-CAfile fichier] [-no_alt_chains] [-reconnect] [-pause] [-showcerts] [-debug] [-msg] [-nbio_test] [-state] [-nbio] [-crlf] [-ign_eof] [-no_ign_eof] [-quiet] [-ssl2] [-ssl3] [-tls1] [-no_tls1_1] [-no_tls1_2] [-no_ssl2] [-no_ssl3] [-no_tls1] [-bugs] [-cipher listechiffrements] [-serverpref] [-starttls protocole] [-engine identifiant] [-tlsextdebug] [-no_ticket] [-sess_out fichier] [-sess_in fichier] [-rand fichier(s)] [-serverinfo types] [-status] [-nextprotoneg protocoles]
DESCRIPTION¶
La commande s_client implémente un client SSL ou TLS générique qui se connecte à un hôte distant en utilisant SSL ou TLS. C’est un outil de diagnostic très pratique pour les serveurs SSL.
OPTIONS¶
- -connect hôte:port
- Cela indique l’hôte et le port facultatif où se connecter. Sans indication, un essai de connexion sera réalisé vers l’hôte local sur le port 4433.
- -servername nom
- Définir l’extension SNI (« Server Name Indication ») TLS dans le message ClientHello.
- -cert fichier
- Le certificat à utiliser, s’il est demandé par le serveur. Par défaut, aucun certificat n’est utilisé.
- -certform format
- Le format de certificat à utiliser : DER ou PEM. Par défaut, PEM est utilisé.
- -key fichier
- La clef privée à utiliser. En absence d’indication, le fichier de certificats sera utilisé.
- -keyform format
- Le format privé à utiliser : DER ou PEM. Par défaut, PEM est utilisé.
- -pass param
- La source du mot de passe de la clef privée. Pour plus d'informations sur le format de param, consultez la section PARAMÈTRES DE PHRASE SECRÈTE d'openssl(1).
- -verify profondeur
- La profondeur de vérification à utiliser. Cela indique la taille maximale de la chaîne de certificats du serveur et active la vérification de certificat du serveur. Actuellement l'opération de vérification continue après les erreurs de façon à montrer tous les problèmes liés à la chaîne de certificats. Par conséquent, la connexion n'échouera jamais à cause d'un échec de vérification de certificat du serveur.
- -verify_return_error
- Renvoyer les erreurs de vérification au lieu de continuer. Cela fera typiquement échouer l’initialisation de connexion avec une erreur fatale.
- -CApath répertoire
- Le répertoire utilisé pour la vérification de certificat du client. Ce répertoire doit être au « format de hachage », consultez verify pour plus de renseignements. Il est aussi utilisé pour construire la chaîne de certificats du client.
- -CAfile fichier
- Un fichier contenant des certificats de confiance utilisés pendant l’authentification du serveur et lors d’une tentative de créer la chaîne de certificats du client.
- -purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check, -extended_crl, -x509_strict, -policy, -check_ss_sig, -no_alt_chains
- Définir plusieurs options de validation de chaîne de certificats. Consultez la page de manuel verify(1) pour plus de précisions.
- -reconnect
- Se reconnecter au même serveur cinq fois en utilisant le même identifiant de session. Cela peut servir de test de fonctionnement du cache de session.
- -pause
- Faire une pause d’une seconde entre chaque appel de lecture et écriture.
- -showcerts
- Afficher toute la chaîne de certificats du serveur : normalement, seul le certificat du serveur lui-même est affiché.
- -prexit
- Afficher les renseignements de session lorsque le programme est quitté. Cela essayera toujours d’afficher les renseignements même en cas d’échec de connexion. Les renseignements ne sont normalement affichés qu’une fois si la connexion réussit. Cette option est utile car l’algorithme de chiffrement en cours d’utilisation pourrait être renégocié, ou la connexion pourrait échouer parce qu’un certificat client est demandé, ou n’être demandé qu’après une tentative d’accès à une certaine URL. Remarque : la sortie produite par cette option n’est pas toujours exacte car une connexion pourrait n’avoir jamais été établie.
- -state
- Afficher les états de session SSL.
- -debug
- Afficher des renseignements de débogage complets y compris l’intégralité des échanges au format hexadécimal.
- -msg
- Montrer tous les messages de protocole avec les échanges au format hexadécimal.
- -nbio_test
- Tester les entrées et sorties non bloquantes.
- -nbio
- Activer les entrées et sorties non bloquantes.
- -crlf
- Cette option traduit un changement de ligne du terminal en RC+PAL (CR+LF) comme exigé par certains serveurs.
- -ign_eof
- Empêcher la fermeture de connexion quand une fin de fichier est atteinte en entrée.
- -quiet
- Empêcher l’affichage de renseignements sur la session et le certificat. Cela active aussi -ign_eof implicitement.
- -no_ign_eof
- Fermer la connexion quand une fin de fichier est atteinte en entrée. Peut être utilisée pour remplacer le -ign_eof implicite après -quiet.
- -psk_identity identité
- Utiliser l’identité PSK identité lors de l’utilisation d’un ensemble de chiffrements PSK.
- -psk clef
- Utiliser la clef PSK clef lors de l’utilisation d’un ensemble de chiffrements PSK. La clef est donnée comme un nombre hexadécimal sans être précédé par 0x, par exemple -psk 1a2b3c4d.
- -ssl2, -ssl3, -tls1, -no_ssl2, -no_ssl3, -no_tls1, -no_tls1_1, -no_tls1_2
- Ces options désactivent l’utilisation de certains protocoles
SSL ou TLS. Par défaut, l’initialisation de connexion
utilise une méthode qui devrait être compatible avec tous
les serveurs et leur permettre d’utiliser SSL v3,
SSL v2 ou TLS comme approprié.
Malheureusement, d'anciens serveurs mal conçus encore utilisés ne gèrent pas cette technique et échoueront à se connecter. Certains serveurs ne fonctionnent que si TLS est désactivé.
- -fallback_scsv
- Envoyer TLS_FALLBACK_SCSV dans ClientHello.
- -bugs
- Plusieurs bogues sont connus dans les implémentations SSL et TLS. L'ajout de cette option permet de contourner certains problèmes.
- -cipher listechiffrements
- Cela permet à la liste de chiffrements envoyée par le client d’être modifiée. Bien que le serveur détermine l’ensemble de chiffrements qui est utilisé, il devrait prendre le premier algorithme de chiffrement pris en charge de la liste envoyée par le client. Consultez la commande ciphers pour plus de renseignements.
- -serverpref
- Utiliser les préférences de chiffrement du serveur ; utilisée seulement pour SSLV2.
- -starttls protocole
- Envoyer le ou les messages spécifiques au protocole pour basculer vers TLS pour la communication. protocole est un mot clef pour le protocole désiré. Actuellement, les seuls mots clefs pris en charge sont « smtp », « pop3 », « imap » et « ftp ».
- -tlsextdebug
- Afficher les échanges au format hexadécimal de toutes les extensions TLS reçues du serveur.
- -no_ticket
- Désactiver la prise en charge des tickets de session RFC 4507 bis.
- -sess_out fichier
- Envoyer la session SSL dans fichier.
- -sess_in fichier
- Charger la session SSL du fichier. Le client essayera de reprendre une connexion depuis cette session.
- -engine identifiant
- Indiquer un moteur (en utilisant son identifiant unique identifiant) obligera s_client à essayer d'obtenir une référence fonctionnelle pour le moteur indiqué et de l'initialiser si nécessaire. Le moteur sera ensuite utilisé par défaut pour tous les algorithmes disponibles.
- -rand fichier(s)
- Un ou plusieurs fichiers contenant des données aléatoires utilisées pour initialiser le générateur de nombres pseudoaléatoires, ou une socket EGD (consultez RAND_egd(3)). Plusieurs fichiers peuvent être indiqués en utilisant le séparateur du système d'exploitation : « ; » pour Windows, « , » pour OpenVMS et « : » pour tous les autres.
- -serverinfo types
- Une liste de types d’extension TLS (nombres compris entre 0 et 65535), séparés par des virgules. Chaque type est envoyé comme une extension TLS ClientHello vide. La réponse du serveur (s’il y en a une) sera encodée et affichée comme un fichier PEM.
- -status
- Envoyer une demande d’état de certificat au serveur (agrafage OCSP). La réponse du serveur (s’il y en a) est affichée.
- -nextprotoneg protocoles
- Activer l’extension TLS de négociation du prochain protocole (« Next Protocol Negotiation ») et fournir une liste de noms de protocoles séparés par des virgules dont le client devrait annoncer la prise en charge. La liste devrait d’abord contenir les protocoles les plus voulus. Les noms de protocole sont des chaînes ASCII affichables, par exemple « http/1.1 » ou « spdy/3 ». Une liste vide de protocoles est traitée spécialement et forcera le client à annoncer la prise en charge de l’extension TLS mais à se déconnecter juste après avoir reçu ServerHello avec une liste des protocoles serveurs pris en charge.
COMMANDES DE CONNEXION¶
Si une connexion est établie avec un serveur SSL, alors toutes les données reçues du serveur sont affichées et n’importe quel appui de touche sera envoyée au serveur. En utilisation interactive (ce qui signifie que ni -quiet ni -ign_eof n’ont été données), la session sera renégociée si la ligne commence par un R, et, si la ligne commence par un Q ou si la fin de fichier est atteinte, la connexion sera fermée.
NOTES¶
s_client peut être utilisée pour déboguer les serveurs SSL. Pour se connecter à un serveur HTTP SSL, la commande :
openssl s_client -connect nomdeserveur:443
serait typiquement utilisée (HTTPS utilise le port 443). Si la connexion réussit, alors une commande HTTP peut être donnée comme « GET / » pour récupérer une page web.
En cas d’échec de l’initialisation de connexion, plusieurs causes sont possibles. Si aucune raison évidente n’est détectée comme l’absence de certificat client, les options -bugs, -ssl2, -ssl3, -tls1, -no_ssl2, -no_ssl3 et -no_tls1 peuvent être essayées si le serveur est bogué. En particulier, vous devriez essayer ces options avant de soumettre un rapport de bogue sur une liste de diffusion d’OpenSSL.
Un problème classique lors d’une tentative d’obtention de certificat client fonctionnel, est qu’un client web se plaint de ne pas avoir de certificat ou donne une liste vide pour le choisir. C’est généralement dû au serveur qui n’envoie pas aux clients les autorités de certification dans sa « liste d’autorités de certification acceptables » quand il demande un certificat. En utilisant s_client, la liste d’autorités de certification peut être vue et vérifiée. Cependant, certains serveurs ne demandent une authentification du client qu’après une demande d’URL spécifique. Pour obtenir la liste dans ce cas, il faut utiliser l’option -prexit et envoyer une requête HTTP pour une page appropriée.
Si un certificat est indiqué sur la ligne de commandes en utilisant l'option -cert, il ne sera pas utilisé à moins que le serveur indiqué n’exige un certificat client. Par conséquent, la simple utilisation d'un certificat client sur la ligne de commandes ne garantit pas que le certificat fonctionne.
En cas de problème de vérification d’un certificat de serveur, l’option -showcerts peut être utilisée pour montrer toute la chaîne.
Puisque le salut du client SSLv23 ne peut pas inclure les méthodes ou extensions de compression, elles ne seront prises en charge que si son utilisation est désactivée, par exemple en utilisant l’option -no_sslv2.
L’utilitaire s_client est un outil de test, conçu pour continuer l’initialisation de connexion après n’importe quelle erreur de vérification de certificat. Par conséquent, il acceptera n’importe quelle chaîne de certificats (de confiance ou non) envoyée par le pair. Aucune application réelle ne devrait faire cela car elle serait vulnérable aux attaques d’homme au milieu. Ce comportement peut être modifié à l’aide de l’option -verify_return_error : toutes les erreurs de vérification sont alors renvoyées en faisant échouer l’initialisation de connexion.
BOGUES¶
Puisque ce programme a beaucoup d’options, et aussi parce que certaines des techniques utilisées sont plutôt vieilles, le code source C de s_client est plutôt difficile à lire et n’est pas un exemple à suivre. Un programme client SSL typique serait beaucoup plus simple.
L’option -prexit est un peu du bidouillage. Les renseignements devraient vraiment être signalés quand une session est renégociée.
VOIR AUSSI¶
HISTORIQUE¶
L’option -no_alt_chains a été ajoutée à OpenSSL 1.0.2b.
TRADUCTION¶
La traduction de cette page de manuel est maintenue par les membres de la liste <debian-l10n-french AT lists DOT debian DOT org>. Veuillez signaler toute erreur de traduction par un rapport de bogue sur le paquet manpages-fr-extra.
2015-12-31 | 1.0.2a 1.0.2c |