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]
[
-reconnect] [
-pause] [
-showcerts] [
-debug] [
-msg] [
-nbio_test] [
-state] [
-nbio]
[
-crlf] [
-ign_eof] [
-no_ign_eof] [
-quiet]
[
-ssl2] [
-ssl3] [
-tls1] [
-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)] [
-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
- 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
- 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, beaucoup d’anciens serveurs mal conçus encore
utilisés ne peuvent pas traiter cette technique et
échoueront à se connecter. Certains serveurs ne fonctionnent
que si TLS est désactivé avec l’option
-no_tls1, d’autres ne prendront en charge que SSL v2
et pourraient nécessiter l’option -ssl2.
- -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.
- -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¶
sess_id(1),
s_server(1),
ciphers(1)
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.