.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "fr::ssl::SSL_CTX_set_tlsext_ticket_key_cb 3SSL" .TH fr::ssl::SSL_CTX_set_tlsext_ticket_key_cb 3SSL "2015-12-31" "1.0.2a 1.0.2c" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NOM" .IX Header "NOM" SSL_CTX_set_tlsext_ticket_key_cb \- Définir un rappel pour le traitement de ticket de session .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fB #include \fR .PP \&\fB long SSL_CTX_set_tlsext_ticket_key_cb(\s-1SSL_CTX\s0\fR \fIsslctx\fR\fB,\fR \fBint (*\fR\fIcb\fR\fB)(\s-1SSL\s0 *s, unsigned char key_name[16],\fR \fBunsigned char\fR \fIiv\fR\fB[\s-1EVP_MAX_IV_LENGTH\s0],\fR \fB\s-1EVP_CIPHER_CTX\s0 *\fR\fIctx\fR\fB, \s-1HMAC_CTX\s0 *\fR\fIhctx\fR\fB, int\fR \fIenc\fR\fB));\fR .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBSSL_CTX_set_tlsext_ticket_key_cb\fR() définit une fonction de rappel \fIcb\fR pour gérer les tickets de session pour le contexte \s-1SSL \s0\fIsslctx\fR. Les tickets de session définis dans la \s-1RFC5077\s0 procurent une amélioration de capacité de reprise de session là où l’implémentation du serveur ne requiert pas la conservation de l’état par session. Cela ne s’applique qu’à \s-1TLS\s0 et il n’existe pas d’implémentation pour SSLv3. .PP Le rappel est disponible lorsque la bibliothèque OpenSSL a été construite sans que \fB\s-1OPENSSL_NO_TLSEXT\s0\fR soit défini. .PP La fonction de rappel \fIcb\fR sera appelée pour chaque client qui initie une session \s-1TLS\s0 lorsque l’extension de ticket de session est présentée dans le message « hello » de \s-1TLS.\s0 C’est la charge de cette fonction de créer ou d'extraire les paramètres de chiffrement et de conserver leur état. .PP La bibliothèque OpenSSL utilise la fonction de rappel pour mettre en œuvre un état commun de construction de ticket selon la section 4 de la \s-1RFC5077,\s0 et est telle que l’état de session l’état est inutile et qu’un petit ensemble de variables de chiffrement doit être conservé par l’implémentation de la fonction de rappel. .PP Pour réutiliser une session, un client \s-1TLS\s0 doit envoyer une extension de ticket de session au serveur. Le client ne peut envoyer qu’un seul ticket de session. Le serveur, à l’aide de la fonction de rappel, soit accepte de réutiliser les données du ticket de session, soit démarre une initialisation de connexion \s-1TLS\s0 complète pour créer un nouveau ticket de session. .PP Avant d’utiliser la fonction de rappel, \fIctx\fR et \fIhctx\fR sont initialisés avec respectivement EVP_CIPHER_CTX_init et HMAC_CTX_init. .PP Pour les nouveaux tickets de session, quand le client n’en présente pas, qu'une recherche de ticket échoue, ou qu'un renouvellement d’option est présenté, la fonction de rappel sera demandée avec \fIenc\fR égal à \fB1\fR. La bibliothèque OpenSSl demande que la fonction définisse un \fIname\fR arbitraire, initialise \fIiv\fR, et définisse le contexte du chiffrement \fIctx\fR et le contexte du hachage \fIhctx\fR. .PP Le \fIname\fR comporte 16 caractères et est utilisé comme clef d’identification. .PP La longueur de \fIiv\fR est la longueur du vecteur d’initialisation de l’algorithme de chiffrement correspondant. La longueur maximale est \&\fB\s-1EVP_MAX_IV_LENGTH\s0\fR octets définie dans \fIevp.h\fR. .PP Le vecteur d’initialisation \fIiv\fR doit être une valeur aléatoire. Le contexte de chiffrement \fIctx\fR doit utiliser le vecteur \fIiv\fR. Le contexte peut être défini en utilisant \fBEVP_EncryptInit_ex\fR. Le contexte \s-1HMAC\s0 peut l’être avec \fBHMAC_Init_ex\fR. .PP Quand un client présente un ticket de session, la fonction de rappel sera appelée avec \fIenc\fR défini à \fB0\fR, signifiant que la fonction \fIcb\fR doit retrouver un ensemble de paramètres. Dans ce cas, \fIname\fR et \fIiv\fR ont déjà été séparés du ticket de session. La bibliothèque OpenSSl s’attend à ce que \&\fIname\fR soit utilisé pour récupérer les paramètres de chiffrement et que le contexte de chiffrement \fIctx\fR soit défini pour retrouver les paramètres et le vecteur d’initialisation \fIiv\fR, en utilisant une fonction telle que \&\fBEVP_DecryptInit_ex\fR. \fIhctx\fR doit être défini avec \fBHMAC_Init_ex\fR. .PP Si \fIname\fR est toujours valable mais qu’un renouvellement du ticket est demandé, la fonction de rappel renverra \fB2\fR. La bibliothèque appellera de nouveau le rappel avec un argument pour \fIenc\fR égal à \fB1\fR pour définir le nouveau ticket. .PP La valeur de retour de la fonction \fIcb\fR est utilisée par OpenSSL pour déterminer quel est le traitement à venir. Les valeurs suivantes signifient : .IP "2" 4 .IX Item "2" Cela indique que \fIctx\fR et \fIhctx\fR ont été définis et que la session peut continuer avec ces paramètres. En plus, cela indique que le ticket de session est dans une période de renouvellement et devrait être renouvelé. La bibliothèque OpenSSL appellera de nouveau \fIcb\fR avec un argument \fIenc\fR de \&\fB1\fR pour définir le nouveau ticket (consultez la \s-1RFC5077 3.3,\s0 paragraphe 2). .IP "1" 4 .IX Item "1" Cela indique que \fIctx\fR et \fIhctx\fR ont été définis et que la session peut continuer avec ces paramètres. .IP "0" 4 Cela indique qu’il n’a pas été possible de définir ou retrouver un ticket de session et que la session \s-1SSL/TLS\s0 continuera par une négociation d’un ensemble de paramètres de chiffrement ou en utilisant le mécanisme de reprise alternatif de \s-1SSL/TLS\s0 par identifiants de session. .Sp Si appelée avec \fIenc\fR égal \fB0\fR, la bibliothèque appellera de nouveau \fIcb\fR pour obtenir un nouveau jeu de paramètres. .IP "inférieur à 0" 4 .IX Item "inférieur à 0" Cela indique une erreur. .SH "NOTES" .IX Header "NOTES" La reprise de session court-circuite \s-1TLS\s0 de façon à ce que la négociation de certificat du client ne se produise pas. Pour cela, le certificat du client et toute autre information sur l’état de la négociation sont chiffrés dans le ticket. Dans une reprise de session, les applications auront toute l’information d’état disponible comme après une pleine négociation. .PP Si un attaquant pouvait obtenir la clef utilisée pour chiffrer le ticket de session, il pourrait, pour tout ticket utilisant cette clef, obtenir la clef secrète maître et déchiffrer tous les messages émis par cette session, même si la suite de chiffrement prend en charge la confidentialité persistante. Par conséquent, les applications peuvent vouloir utiliser plusieurs clefs et éviter les clefs utilisées sur un long terme et stockées dans des fichiers. .PP Les applications peuvent utiliser des clefs plus longues pour conserver un niveau de sécurité constant. Par exemple, si la suite de chiffrement est basée sur 256 bits mais que la clef du ticket est basée sur 128 bits, la sécurité d’ensemble est basée sur 128 bits car le cassage de la clef de ticket permettra à un attaquant d’obtenir les clefs de session. .SH "EXEMPLES" .IX Header "EXEMPLES" Implémentation de référence : SSL_CTX_set_tlsext_ticket_key_cb(\s-1SSL\s0,ssl_tlsext_ticket_key_cb); ... .PP .Vb 9 \& static int ssl_tlsext_ticket_key_cb(SSL *s, \& unsigned char key_name[16], \& unsigned char *iv, EVP_CIPHER_CTX *ctx, \& HMAC_CTX *hctx, int enc) \& { \& if (enc) { /* créer une nouvelle session */ \& if (RAND_bytes(iv, EVP_MAX_IV_LENGTH) ) { \& return \-1; /* entropie insuffisante */ \& } \& \& key = currentkey(); /* quelque chose à mettre en œuvre */ \& if ( !key ) { \& /* la clef actuelle n’existe pas ou n’est pas valable */ \& key = createkey(); /* quelque chose à mettre en œuvre. \& * createkey doit initialiser un nom, \& * une clef AES, une clef HMAC et \& * peut\-être une date limite. */ \& if ( !key ) { /* la clef n’a pu être créée */ \& return 0; \& } \& } \& memcpy(key_name, key\->name, 16); \& \& EVP_EncryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, \& key\->aes_key, iv); \& HMAC_Init_ex(&hctx, key\->hmac_key, 16, EVP_sha256(), NULL); \& \& return 1; \& \& } else { /* retrouver une session */ \& key = findkey(name); \& \& if (!key || key\->expire < now() ) { \& return 0; \& } \& \& HMAC_Init_ex(&hctx, key\->hmac_key, 16, EVP_sha256(), NULL); \& EVP_DecryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, \& key\->aes_key, iv); \& \& if (key\->expire < ( now() \- RENEW_TIME ) ) { \& /* return 2 ~ cette session doit obtenir un nouveau \& ticket même si l’actuel est encore valable */ \& return 2; \& } \& return 1; \& \& } \& } .Ve .SH "VALEURS DE RETOUR" .IX Header "VALEURS DE RETOUR" \&\fB0\fR est renvoyé pour signifier qu’une fonction de rappel est définie. .SH "VOIR AUSSI" .IX Header "VOIR AUSSI" \&\fBssl\fR(3), \fBSSL_set_session\fR(3), \&\fBSSL_session_reused\fR(3), \&\fBSSL_CTX_add_session\fR(3), \&\fBSSL_CTX_sess_number\fR(3), \&\fBSSL_CTX_sess_set_get_cb\fR(3), \&\fBSSL_CTX_set_session_id_context\fR(3), .SH "HISTORIQUE" .IX Header "HISTORIQUE" Cette fonction a été introduite dans OpenSSL 0.9.8h .SH "TRADUCTION" .IX Header "TRADUCTION" La traduction de cette page de manuel est maintenue par les membres de la liste . Veuillez signaler toute erreur de traduction par un rapport de bogue sur le paquet manpages-fr-extra.