Provided by: manpages-fr-extra_20151231_all 

NOM
SSL_CTX_set_client_cert_cb, SSL_CTX_get_client_cert_cb - Gestion de la fonction de rappel de certificat
client.
SYNOPSIS
#include <openssl/ssl.h>
void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, int (*client_cert_cb)(SSL *ssl, X509 **x509, EVP_PKEY
**pkey));
int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx))(SSL *ssl, X509 **x509, EVP_PKEY **pkey);
int (*client_cert_cb)(SSL *ssl, X509 **x509, EVP_PKEY **pkey);
DESCRIPTION
SSL_CTX_set_client_cert_cb() définit le rappel client_cert_cb(), qui est appelé lors d’une demande de
certificat client par un serveur et qu’aucun certificat n’a été défini pour l’objet SSL.
Lorsque client_cert_cb() est NULL, aucune fonction de rappel n’est utilisée.
SSL_CTX_ge_client_cert_cb() renvoie un pointeur vers la fonction de rappel actuellement définie.
client_cert_cb() est le rappel défini par l’application. Si elle veut définir un certificat, une
combinaison clef/certificat privé doit être indiquée en utilisant les arguments x509 et pkey, et 1 doit
être renvoyé. Le certificat sera installé dans ssl ; consultez les sections NOTES et BOGUES. Si aucun
certificat ne doit être défini, 0 doit être renvoyé et aucun certificat ne sera adressé. Le renvoi d’une
valeur négative suspendra l’initiation de connexion et la fonction d’initiation s'arrêtera immédiatement.
SSL_get_error(3) renverra SSL_ERROR_WANT_X509_LOOKUP pour signaler que l’initiation est suspendue. Le
prochain appel à la fonction d’initiation amènera de nouveau à l’appel de client_cert_cb(). C’est au
client_cert_cb() d’emmagasiner l’information sur l’état du dernier appel, si une demande de continuation
est faite.
NOTES
Pendant l’initialisation de connexion (ou renégociation), un serveur peut demander un certificat au
client. Un certificat client doit seulement être adressé, lorsque le serveur a bien envoyé la requête.
Quand un certificat a été défini en utilisant la famille de fonctions SSL_CTX_use_certificate(3), il est
adressé au serveur. La norme TLS exige qu’un seul certificat soit adressé, s’il a une correspondance dans
la liste de CA acceptables envoyée par le serveur. Cette contrainte n’est pas respectée par le
comportement par défaut de la bibliothèque OpenSSL. L’utilisation de la fonction de rappel permet
d’implémenter une routine de sélection appropriée ou de choisir le certificat à envoyer par une
interaction de l’utilisateur.
Si une fonction de rappel est définie et qu’aucun certificat n’a été défini pour l’objet SSL, la fonction
de rappel est appelée. Si la fonction de rappel renvoie un certificat, la bibliothèque OpenSSL essayera
de charger la clef privée et les données de certificat dans l’objet SSL, en utilisant les fonctions
SSL_use_certificate() et SSL_use_private_key(). Par conséquent, les clef et certificat seront installés
définitivement pour l’objet SSL. Ils ne seront pas réinitialisés par SSL_clear(3). Si le rappel ne
renvoie aucun certificat, la bibliothèque OpenSSl n’adressera pas de certificat.
BOGUES
client_cert_cb() ne peut pas renvoyer une chaîne de certificats complète, il peut simplement renvoyer un
certificat client. Si la chaîne est de longueur 2, le certificat du CA racine peut être omis en accord
avec le standard TLS et donc une réponse conforme au standard peut être adressée au serveur. Pour une
chaîne plus longue, le client doit envoyer la chaîne complète (avec l’option d’omettre le certificat du
CA racine). Cela peut être uniquement accompli soit en ajoutant les certificats de CA intermédiaires dans
le stockage de certificats de confiance pour l’objet SSL_CTX (avec pour conséquence d’avoir à ajouter des
certificats de CA qui peut-être ne seraient pas considérés de confiance), soit en ajoutant la chaîne de
certificats avec la fonction SSL_CTX_add_extra_chain_cert(3), qui est seulement disponible pour l’objet
SSL_CTX globalement, et par conséquent peut probablement s’appliquer à un seul certificat client, rendant
le concept de fonction de rappel (pour permettre le choix parmi plusieurs certificats) discutable.
Une fois que l’objet SSL a été utilisé conjointement avec la fonction de rappel, le certificat sera
défini pour l’objet SSL et ne sera pas effacé même quand SSL_clear(3) sera appelée. Il est donc
obligatoire de détruire l’objet SSL avec SSL_free(3) et créer un nouvel objet pour retourner à l’état
précédent.
VOIR AUSSI
ssl(3), SSL_CTX_use_certificate(3), SSL_CTX_add_extra_chain_cert(3), SSL_get_client_CA_list(3),
SSL_clear(3), SSL_free(3)
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.
1.0.2a 1.0.2c 2015-12-31 fr::ssl::SSL_CTX_set_client_cert_cb(3SSL)