SSL_CTX_set_client_cert_cb(3) Gestion de la

Other Alias

SSL_CTX_get_client_cert_cb

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 **x509EVP_PKEY **pkey);
 int (*client_cert_cb)(SSL *ssl, X509 **x509EVP_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.

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.