.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" 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_tmp_dh_callback 3SSL" .TH fr::ssl::SSL_CTX_set_tmp_dh_callback 3SSL "2015-01-30" "1.0.1k" "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_tmp_dh_callback, SSL_CTX_set_tmp_dh, SSL_set_tmp_dh_callback, SSL_set_tmp_dh \- Gérer les clefs \s-1DH\s0 pour l’échange de clefs éphémères .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fB #include \fR .PP \&\fB void SSL_CTX_set_tmp_dh_callback(\s-1SSL_CTX\s0 *\fR\fIctx\fR\fB,\fR \fB\s-1DH\s0 *(*\fR\fItmp_dh_callback\fR\fB)(\s-1SSL\s0 *\fR\fIssl\fR\fB, int\fR \fIis_export\fR\fB,\fR \fBint\fR \fItaille_clef\fR\fB);\fR \fBlong SSL_CTX_set_tmp_dh(\s-1SSL_CTX\s0 *\fR\fIctx\fR\fB, \s-1DH\s0 *\fR\fIdh\fR\fB);\fR .PP \&\fB void SSL_set_tmp_dh_callback(\s-1SSL\s0 *\fR\fIctx\fR\fB,\fR \fB\s-1DH\s0 *(*\fR\fItmp_dh_callback\fR\fB)(\s-1SSL\s0 *\fR\fIssl\fR\fB, int\fR \fIis_export\fR\fB,\fR \fBint\fR \fItaille_clef\fR\fB));\fR \fBlong SSL_set_tmp_dh(\s-1SSL\s0 *\fR\fIssl\fR\fB, \s-1DH\s0 *\fR\fIdh\fR\fB)\fR .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBSSL_CTX_set_tmp_dh_callback\fR() définit la fonction de rappel à utiliser pour \fIctx\fR lorsqu’un paramètre \s-1DH\s0 est nécessaire pour \&\fItmp_dh_callback\fR. Tous les objets \fIssl\fR créés à partir de \fIctx\fR héritent du rappel. .PP \&\fBSSL_CTX_set_tmp_dh\fR() définit les paramètres \s-1DH\s0 à utiliser à \fIdh\fR. Tous les objets \fIssl\fR créés à partir de \fIctx\fR héritent de la clef. .PP \&\fBSSL_set_tmp_dh_callback\fR() définit le rappel seulement pour \fIssl\fR. .PP \&\fBSSL_set_tmp_dh\fR() définit les paramètres seulement pour \fIssl\fR. .PP Ces fonctions sont applicables aux serveurs \s-1SSL/TLS\s0 uniquement. .SH "NOTES" .IX Header "NOTES" Lors de l’utilisation d’un algorithme de chiffrement avec authentification \&\s-1RSA,\s0 un échange de clefs éphémères \s-1DH\s0 peut survenir. Les algorithmes avec clefs \s-1DSA\s0 utilisent toujours des clefs éphémères \s-1DH.\s0 Dans ces cas, les données de session sont négociées en utilisant une clef éphémère/temporaire \&\s-1DH\s0 et la clef fournie et authentifiée par la chaîne de certificats est utilisée uniquement pour la signature. Les algorithmes anonymes (sans serveur permanent de clefs) utilisent aussi les clefs éphémères \s-1DH.\s0 .PP L’usage de clef éphémère \s-1DH\s0 rend la confidentialité persistante, car la connexion ne peut être déchiffrée que lorsque la clef \s-1DH\s0 est connue. En créant une clef \s-1DH\s0 éphémère uniquement pendant la durée de la mise en œuvre du serveur, un attaquant ne peut absolument pas déchiffrer des sessions terminées même s’il se procure une clef conforme (certifiée), puisque la clef n’a été utilisée que pour la signature. .PP Pour réaliser l’échange de clefs \s-1DH,\s0 le serveur doit utiliser un ensemble \s-1DH \&\s0(paramètres \s-1DH\s0) et créer une clef \s-1DH.\s0 Durant la négociation, le serveur générera toujours une nouvelle clef \s-1DH\s0 si les paramètres \s-1DH\s0 sont fournis à l’aide du rappel ou si l’option \fB\s-1SSL_OP_SINGLE_DH_USE\s0\fR de \&\fBSSL_CTX_set_options\fR(3) est définie (ou les deux). Le serveur créera immédiatement une clef \s-1DH\s0 si les paramètres \s-1DH\s0 sont fournis à l’aide de \&\fBSSL_CTX_set_tmp_dh\fR() et que \fB\s-1SSL_OP_SINGLE_DH_USE\s0\fR n’est pas définie. Dans ce cas, une clef peut être créée lors d’une initialisation et n’être jamais nécessaire, quoique d’un autre coté, le temps de calcul pendant la négociation est économisé. .PP Si des nombres premiers « forts » sont utilisés pour générer les paramètres \&\s-1DH,\s0 créer une nouvelle clef n’est pas strictement nécessaire à chaque initialisation de connexion mais cela améliore la confidentialité persistante. Si l’utilisation de nombres premiers « forts » n’est pas sûre, (consultez particulièrement la section ci-dessous à propos des paramètres \&\s-1DSA\s0), \fB\s-1SSL_OP_SINGLE_DH_USE\s0\fR doit être utilisée pour empêcher les attaques par sous-groupes. L’utilisation de \fB\s-1SSL_OP_SINGLE_DH_USE\s0\fR a toujours des incidences sur le temps de calcul nécessaire à la négociation, mais ce n’est pas très important et les créateurs ou utilisateurs devraient toujours activer cette option. .PP Comme le temps pour générer les paramètres \s-1DH\s0 est extrêmement long, les applications ne devraient pas les créer à la volée mais les fournir. Ces paramètres \s-1DH\s0 peuvent être réutilisés puisque la clef effective est fraichement créée durant la négociation. Le risque de la réutilisation est qu’un attaquant pourrait se focaliser sur un groupe \s-1DH\s0 très souvent utilisé. Les applications devraient donc créer leurs propres paramètres \s-1DH\s0 durant le processus d’installation en utilisant la fonction d’OpenSSL \&\fBdhparam\fR(1). Dans le but de réduire le temps de calcul nécessaire, les paramètres \s-1DSA\s0 peuvent être utilisés à la place (consultez \&\fBdhparam\fR(1)), mais dans ce cas \fB\s-1SSL_OP_SINGLE_DH_USE\s0\fR est obligatoire. .PP Les créateurs d’application peuvent compiler avec les paramètres \s-1DH.\s0 Les fichiers \fIdh512.pem\fR, \fIdh1024.pem\fR, \fIdh2048.pem\fR, et \fIdh4096.pem\fR dans le répertoire « apps » de l’actuelle distribution d’OpenSSL contenant le paramètre \s-1DH\s0 « \s-1SKIP\s0 », celui-ci utilisant des nombres premiers sûrs et, d’une manière vérifiable, générés de manière pseudo\-aléatoire. Ces fichiers peuvent être convertis en code C avec l’option \fB\-C\fR de la fonction \&\fBdhparam\fR(1). Les créateurs peuvent aussi générer leur propre jeu de paramètres en utilisant \fBdhparam\fR(1), mais un utilisateur ne sera jamais certain de la manière dont ces paramètres ont été créés. La création des paramètres \s-1DH\s0 lors de l’installation est donc recommandée. .PP Une application peut soit indiquer les paramètres \s-1DH,\s0 soit les fournir avec une fonction de rappel. La méthode avec rappel a l’avantage que le rappel peut fournir ces paramètres pour différentes longueurs de clef. .PP \&\fItmp_dh_callback\fR est appelée avec la \fItaille_clef\fR désirée et l’information \fIis_export\fR. L’attribut \fIis_export\fR est activé lors de l’échange de clefs éphémères \s-1DH\s0 est réalisé avec un algorithme de chiffrement pour l’export. .SH "EXEMPLES" .IX Header "EXEMPLES" Prise en charge des paramètres \s-1DH\s0 pour des longueurs de clef de 512 et 1024 bits. (la gestion des erreurs est délaissée). .PP .Vb 5 \& ... \& /* Définir ce qui concerne DH éphémère */ \& DH *dh_512 = NULL; \& DH *dh_1024 = NULL; \& FILE *; \& \& ... \& /* "openssl dhparam \-out dh_param_512.pem \-2 512" */ \& I = fopen("dh_param_512.pem", "r"); \& if (I) { \& dh_512 = PEM_read_DHparams(I, NULL, NULL, NULL); \& fclose(I); \& } \& /* "openssl dhparam \-out dh_param_1024.pem \-2 1024" */ \& I = fopen("dh_param_1024.pem", "r"); \& if (I) { \& dh_1024 = PEM_read_DHparams(I, NULL, NULL, NULL); \& fclose(I); \& } \& ... \& \& /* "openssl dhparam \-C \-2 512" etc. */ \& DH *get_dh512() { ... } \& DH *get_dh1024() { ... } \& \& DH *tmp_dh_callback(SSL *s, int is_export, int taille_clef) \& { \& DH *dh_tmp=NULL; \& \& switch (taille_clef) { \& case 512: \& if (!dh_512) \& dh_512 = get_dh512(); \& dh_tmp = dh_512; \& break; \& case 1024: \& if (!dh_1024) \& dh_1024 = get_dh1024(); \& dh_tmp = dh_1024; \& break; \& default: \& /* Créer une clef à la volée est très cher, aussi utilisez ceci */ \& setup_dh_parameters_like_above(); \& } \& return(dh_tmp); \& } .Ve .SH "VALEURS DE RETOUR" .IX Header "VALEURS DE RETOUR" \&\fBSSL_CTX_set_tmp_dh_callback\fR() et \fBSSL_set_tmp_dh_callback\fR() ne renvoient pas d’information de diagnostic. .PP \&\fBSSL_CTX_set_tmp_dh\fR() et \fBSSL_set_tmp_dh\fR() renvoient \fB1\fR en cas de réussite et \fB0\fR en cas d’échec. .SH "VOIR AUSSI" .IX Header "VOIR AUSSI" \&\fBssl\fR(3), \&\fBSSL_CTX_set_cipher_list\fR(3), \&\fBSSL_CTX_set_tmp_rsa_callback\fR(3), \&\fBSSL_CTX_set_options\fR(3), \&\fBciphers\fR(1), \fBdhparam\fR(1) .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.