s_server(1) programme serveur SSL ou TLS

SYNOPSIS

openssl s_server [-accept port] [-context identifiant] [-verify profondeur] [-Verify profondeur] [-crl_check] [-crl_check_all] [-cert fichier] [-certform DER|PEM] [-key fichier] [-keyform DER|PEM] [-pass param] [-dcert fichier] [-dcertform DER|PEM] [-dkey fichier] [-dkeyform DER|PEM] [-dpass param] [-dhparam fichier] [-nbio] [-nbio_test] [-crlf] [-debug] [-msg] [-state] [-CApath répertoire] [-CAfile fichier] [-no_alt_chains] [-nocert] [-cipher listechiffrements] [-serverpref] [-quiet] [-no_tmp_rsa] [-ssl2] [-ssl3] [-tls1] [-no_ssl2] [-no_ssl3] [-no_tls1] [-no_dhe] [-bugs] [-hack] [-www] [-WWW] [-HTTP] [-engine identifiant] [-tlsextdebug] [-no_ticket] [-id_prefix param] [-rand fichier(s)] [-serverinfo fichier] [-no_resumption_on_reneg] [-status] [-status_verbose] [-status_timeout nsec] [-status_url URL] [-nextprotoneg protocoles]

DESCRIPTION

La commande s_server implémente un serveur SSL ou TLS générique qui attend les connexions sur un port donné en utilisant SSL ou TLS.

OPTIONS

-accept port
Le port TCP où attendre les connexions. Sans indication, le port 4433 est utilisé.
-context identifiant
Définir l’identifiant de contexte SSL. N’importe quelle valeur de chaîne peut être donnée. Si cette option est absente, une valeur par défaut sera utilisée.
-cert fichier
Le certificat à utiliser, la plupart des ensembles de chiffrements de serveurs nécessitent l’utilisation d’un certificat et certains ont besoin d’un certificat avec un certain type de clef publique : par exemple les ensembles de chiffrements DSS ont besoin d’un certificat contenant une clef DSS (DSA). Si aucun n’est indiqué, le nom de fichier server.pem sera 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).
-dcert fichier, -dkey fichier
Indiquer un certificat et une clef privée supplémentaires, cela se comporte de la même façon que les options -cert et -key à part, si elles ne sont pas indiquées, l’absence de valeur par défaut (aucun certificat ni clef supplémentaires ne seront utilisés). Comme indiqué précédemment, certains ensembles de chiffrements nécessitent un certificat contenant une clef d’un certain type. Certains ensembles de chiffrements ont besoin d’un certificat contenant une clef RSA et d’autres une clef DSS (DSA). En utilisant des certificats et clefs RSA et DSS, un serveur peut accepter les clients qui ne gèrent que les ensembles de chiffrements RSA ou DSS en utilisant un certificat approprié.
-dcertform format, -dkeyform format, -dpass param
Ajouter respectivement le format de certificat et de clef privée, et la phrase secrète.
-nocert
Si cette option est définie, aucun certificat n’est utilisé. Cela restreint les ensembles de chiffrements disponibles à ceux anonymes (actuellement seulement DH anonyme).
-dhparam fichier
Le fichier de paramètres DH à utiliser. Les ensembles de chiffrements DH éphémères génèrent des clefs utilisant un ensemble de paramètres DH. Sans indication, une tentative de chargement des paramètres est réalisée à partir du fichier de certificats serveur. Si cela échoue, alors un ensemble fixe de paramètres, et propre au programme s_server, sera utilisé.
-no_dhe
Si cette option est définie, aucun paramètre DH ne sera chargé, désactivant effectivement les ensembles de chiffrements DH éphémères.
-no_tmp_rsa
Certains ensembles de chiffrements d’exportation utilisent parfois une clef RSA temporaire, cette option désactive la création de clef RSA temporaire.
-verify profondeur, -Verify profondeur
La profondeur de vérification à utiliser. Cela indique la taille maximale de la chaîne de certificats du client et force le serveur à demander un certificat au client. Avec l’option -verify, un certificat est demandé mais le client ne doit pas nécessairement en envoyer un, avec l’option -Verify, le client doit fournir un certificat sinon une erreur survient.

Si l’ensemble de chiffrements ne peut pas demander un client de certificat (par exemple un ensemble de chiffrements anonyme ou PSK), cette option est sans effet.

-crl_check, -crl_check_all
Vérifier que le certificat du pair n’a pas été révoqué par son autorité de certification. Les listes de révocations de certificat sont ajoutées au fichier de certificats. Avec l’option -crl_check_all, toutes les listes de révocations de certificat de toutes les autorités de certification de la chaîne sont vérifiées.
-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 serveur.
-CAfile fichier
Un fichier contenant les certificats de confiance à utiliser lors d’une authentification de client et à utiliser lors d’une tentative de construction de chaîne de certificats du serveur. La liste est aussi utilisée dans la liste d’autorités de certification possibles transmise au client quand un certificat est demandé.
-no_alt_chains
Consultez la page de manuel verify(1) pour plus de précisions.
-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).
-quiet
Empêcher l’affichage de renseignements sur la session et le certificat.
-psk_hint suggestion
Utiliser la suggestion PSK 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é.
-bugs
Plusieurs bogues sont connus dans les implémentations SSL et TLS. L'ajout de cette option permet de contourner certains problèmes.
-hack
Cette option active un autre contournement pour du vieux code SSL de Netscape.
-cipher listechiffrements
Cela permet à la liste de chiffrements utilisée par le serveur d’être modifiée. Quand le client envoie une liste de chiffrements pris en charge, le premier algorithme de chiffrement client pris en charge, aussi inclus dans la liste du serveur, est utilisé. Comme le client indique l’ordre de préférence, l’ordre de la liste de chiffrements du serveur n’a pas d’importance. Consultez la commande ciphers pour plus de renseignements.
-serverpref
Utiliser les préférences de chiffrement du serveur au lieu des préférences du client.
-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.
-www
Renvoyer un message d’état au client quand il se connecte. Cela contient beaucoup de renseignements sur les algorithmes de chiffrement utilisés et divers paramètres de session. La sortie est au format HTML donc cette option sera normalement utilisée avec un navigateur web.
-WWW
Émuler un serveur web simple. Les pages seront résolues relativement au répertoire actuel, par exemple si l’URL https://hôte/page.html est demandée, le fichier ./page.html sera chargé.
-HTTP
Émuler un serveur web simple. Les pages seront résolues relativement au répertoire actuel, par exemple si l’URL https://hôte/page.html est demandée, le fichier ./page.html sera chargé. Les fichiers chargés sont supposés contenir une réponse HTTP complète et correcte (les lignes qui font partie de la ligne de réponse HTTP et les en-têtes doivent se terminer par RC+PAL (CR+LF).
-engine identifiant
Indiquer un moteur (en utilisant son identifiant unique identifiant) obligera s_server à essayer d'obtenir une référence fonctionnelle pour le moteur indiqué et l'initialiser si nécessaire. Le moteur sera ensuite utilisé par défaut pour tous les algorithmes disponibles.
-id_prefix param
Générer des identifiants de session SSL ou TLS précédés par param. C’est surtout utile pour tester n’importe quel code SSL ou TLS (par exemple les mandataires, ou « proxy ») qui désire échanger avec plusieurs serveurs quand chacun d’eux pourrait générer une série d’identifiants particuliers de session (par exemple avec un certain préfixe).
-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 fichier
Un fichier contenant au moins un bloc de données PEM. Chaque bloc PEM doit encoder une extension TLS ServerHello (2 octets de type, 2 octets de taille, suivis de « taille » octets de données d’extension). Si le client envoie une extension TLS ClientHello vide correspondant au type, l’extension ServerHello correspondante sera renvoyée.
-no_resumption_on_reneg
Activer l’attribut SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION.
-status
Activer la prise en charge de demande d’état de certificat au serveur (agrafage OCSP).
-status_verbose
Activer la prise en charge de demande d’état de certificat au serveur (agrafage OCSP) et donner une sortie bavarde de la réponse OCSP.
-status_timeout nsec
Définir la durée d'expiration pour la réponse OCSP à nsec secondes.
-status_url URL
Définir une URL de répondeur de repli à utiliser si aucune URL de répondeur n’est présente dans le certificat du serveur. Sans cette option, une erreur est renvoyée si le certificat du serveur ne contient pas d’adresse de répondeur.
-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. 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 ».

COMMANDES DE CONNEXION

Si une connexion demandée est établie avec un client SSL et qu’aucune des options -www ou -WWW n’a été utilisée, alors normalement, toutes les données reçues du client sont affichées et n’importe quel appui de touche sera envoyé au client.

Certaines commandes d’une seule lettre sont aussi reconnues et réalisent des opération particulières : la liste est ci-dessous.

q
Terminer la connexion SSL actuelle mais continuer à accepter de nouvelles connexions.
Q
Terminer la connexion SSL actuelle et quitter.
r
Renégocier la session SSL.
R
Renégocier la session SSL et demander un certificat client.
P
Envoyer du texte en clair dans la connexion TCP sous-jacente : cela devrait forcer le client à se déconnecter à cause d’une violation de protocole.
S
Afficher certains renseignements d’état sur le cache de session.

NOTES

s_server peut être utilisée pour déboguer les clients SSL. Pour accepter les connexions d’un navigateur web, la commande :

 openssl s_server -accept 443 -www

peut par exemple être utilisée.

La plupart des navigateurs web (en particulier Netscape et MSIE) n’acceptent que les ensembles de chiffrements RSA, donc ne peuvent pas se connecter à des serveurs qui n’utilisent pas de certificat ne comportant pas de clef RSA ou à une version d’OpenSSL avec RSA désactivé.

Bien qu’indiquer une liste vide d’autorités de certification lors de la demande de certificat client est une violation de protocole au sens strict, certains clients SSL interprètent cela comme une indication que n’importe quelle autorité de certification est acceptable. C’est utile dans des buts de débogage.

Les paramètres de session peuvent être affichés en utilisant le programme sess_id.

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_server est plutôt difficile à lire et n’est pas un exemple à suivre. Un programme serveur SSL typique serait beaucoup plus simple.

L’affichage des algorithmes de chiffrement communs est faux : il ne donne que la liste d’algorithmes de chiffrement reconnus par OpenSSL et pris en charge par le client.

Le programme s_server devrait pouvoir afficher des précisions sur tous les ensembles de chiffrements inconnus qu’un client prétend prendre en charge.

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.