Provided by: manpages-fr_4.27.0-1_all 

NOM
config — Fichiers de configuration de la bibliothèque OpenSSL CONF
DESCRIPTION
Cette page documente la syntaxe des fichiers de configuration d'OpenSSL tels qu'ils sont analysés par
NCONF_load(3) et les fonctions liées. Ce format est utilisé par de nombreuses commandes d'OpenSSL, ainsi
que pour initialiser les bibliothèques lors de leur utilisation par une application.
La première partie décrit la syntaxe générale des fichiers de configuration et les sections suivantes
décrivent les sémantiques des modules individuels. D'autres modules sont décrits dans fips_config(5) et
x509v3_config(5). La syntaxe de la définition des valeurs d'ASN.1 est décrite dans
ASN1_generate_nconf(3).
SYNTAXE
Un fichier de configuration est une série de lignes. Les lignes blanches et les espaces entre les
éléments d'une ligne n'ont pas de signification. Un commentaire débute par le caractère # ; le reste de
la ligne est ignoré. Si le # est le premier caractère (qui n'est pas un espace) dans une ligne, la ligne
entière est ignorée.
Directives
Deux directives, .include et .pragma peuvent être utilisées pour contrôler l'analyse des fichiers de
configuration.
Pour assurer une compatibilité avec les versions plus anciennes d'OpenSSL, un signe égal après la
directive est ignoré. Les versions plus anciennes le traitent comme une affectation, aussi il faut
prendre des précautions si la différence dans les sémantiques est importante.
Un fichier peut en inclure d'autres avec la syntaxe include :
.include [=] pathname
Si chemin est un fichier simple, ce fichier est inclus directement à cet emplacement. Les fichiers inclus
peuvent avoir des affectations .include qui spécifient d'autres fichiers. Si chemin est un répertoire,
tous les fichiers dans ce répertoire qui possèdent l'extension ".cnf" ou ".conf" seront inclus,
(disponible seulement dans les systèmes qui gèrent les entrées-sorties POSIX). Les sous-directoires
trouvés dans le chemin sont ignorés. De la même façon, si un fichier est ouvert pendant le balayage d'un
répertoire et si ce fichier contient une directive .include qui spécifie un répertoire, elle est aussi
ignorée.
Comme règle générale, le chemin devrait être un chemin absolu ; cela peut être imposé avec les directives
abspath et includedir décrites plus loin. La variable d'environnement OPENSSL_CONF_INCLUDE, si elle
existe, est ajoutée au début de tous les chemins relatifs. Si le chemin est encore relatif, il est
interprété par rapport au répertoire de travail en cours.
Pour obliger toutes les inclusions de fichier à nommer des chemins absolus, utilisez la directive
suivante :
.pragma [=] abspath:value
Le comportement par défaut, où la valeur est false ou off, est de permettre des chemins relatifs. Pour
exiger que tous les chemins .include soient des chemins absolus, utilisez une valeur de true ou on.
Dans ces fichiers, le signe dollar, $, est utilisé pour référencer une variable, comme décrit ci-dessous.
Sur certaines plateformes, néanmoins, il est courant de traiter $ comme un caractère normal dans les noms
de symbole. La prise en charge de ce comportement peut être obtenu avec la directive suivante :
.pragma [=] dollarid:value
Le comportement par défaut, où la valeur est false ou off, est de traiter le signe dollar comme
l'indication d'un nom de variable ; "toto$truc"' est interprété comme "toto" suivi par le développement
de la variable "truc". Si la valeur est true ou on, "toto$truc" est un nom unique de sept caractères et
les variables d'expansion doivent être spécifiées avec des accolades ou des parenthèses.
.pragma [=] includedir:value
Si un chemin relatif est spécifié dans la directive .include et si la variable d'environnement
OPENSSL_CONF_INCLUDE n'existe pas, la valeur de la directive includedir, si elle existe, est ajoutée au
début du chemin.
Paramètres
Un fichier de configuration est divisé en plusieurs sections. Une section commence par le nom de section
entre crochets et se termine quand une autre section commence ou quand la fin du fichier est atteinte. Le
nom de section peut contenir des caractères alphanumériques et des caractères de soulignement. Les
espaces entre le nom et les crochets sont supprimés.
La première section d'un fichier de configuration est spéciale et est appelée la section par défaut
(« default »), qui n’est généralement pas nommée et commence au début du fichier jusqu'à la première
section nommée. Quand un nom est recherché, il est d'abord recherché dans la section en cours ou la
section nommée, puis dans la section par défaut.
L'environnement est projeté dans une section appelée ENV.
Une section conporte une série d'assignations nom/valeur décrites plus en détail ci-dessous. Pour rappel,
les crochets présents dans cet exemple sont obligatoires et non optionnels.
[ section ]
name1 = This is value1
name2 = Another value
...
[ newsection ]
name1 = New value1
name3 = Value 3
La chaîne nom peut contenir des caractères alphanumériques ainsi que quelques symboles de ponctuation
comme , . ; et _. L'espace après le nom et celui avant le signe égal sont ignorés.
Si le même nom existe dans la même section, toutes les valeurs sauf la dernière seront ignorées. Dans
certaines circonstances telles qu'avec les noms uniques de certificat (« Certificate DN »), le même champ
peut apparaître plusieurs fois. Afin de gérer cela, les commandes telles que openssl-req(1) ignorent tout
texte initial précédé par un point .. Par exemple :
1.OU = First OU
2.OU = Second OU
La chaîne valeur est composée de la chaîne qui suit le caractère = jusqu'à la fin de la ligne avec tous
les espaces de début et de fin supprimés.
La chaîne de la valeur est soumise à l'extension de variable. Le texte $var ou "${var}"' insère la valeur
de la variable nommée à partir de la section en cours. Pour utiliser une valeur venant d'une autre
section, utilisez $section::nom ou "${section::nom}". En utilisant $ENV::nom, la valeur de la variable
d'environnement spécifiée sera substituée.
Les variables doivent être définies avant le référencement de leur valeur, autrement une erreur est
signalée et le fichier n'est pas chargé. Cela peut être contourné en spécifiant une valeur par défaut
dans la section par défaut (« default section ») avant l'utilisation de la variable.
Tout paramètre nom/valeur dans une section ENV est disponible pour le fichier de configuration, mais ne
se propage pas dans l'environnement.
C'est une erreur si la valeur finit par avoir une longueur supérieure à 64 Ko.
Certains caractères peuvent être protégés à l'aide d'un guillemet simple ' ou double " autour de la
valeur, ou du caractère barre oblique inversée \ avant le caractère. Si le dernier caractère d'une ligne
est \, une chaîne valeur peut être répartie sur plusieurs lignes. De plus, les suites \n, \r, \b et \t
sont reconnues.
Les règles d'expansion et de protection telles que décrites ci-dessus pour valeur s'appliquent aussi au
chemin de la directive .include.
CONFIGURATION DE LA BIBLIOTHÈQUE OPENSSL
Les sections ci-dessous utilisent le terme informel de module pour faire référence à une partie des
fonctions d'OpenSSL. Cette appellation n'est pas identique au terme formel module FIPS, par exemple.
La configuration d'OpenSSL recherche la valeur d'openssl_conf dans la section par défaut et la prend
comme nom de la section qui spécifie comment configurer les modules dans la bibliothèque. Laisser un
module dans sa configuration par défaut n'est pas une erreur. Une application peut spécifier un nom
différent en appelant par exemple directement CONF_modules_load_file().
OpenSSL recherche aussi la valeur de config_diagnostics. Si elle existe et a une valeur numérique
différente de zéro, toute erreur supprimant les signaux passés à CONF_modules_load() sera ignorée. C'est
utile pour diagnostiquer les erreurs de configuration mais son usage en production exige une attention
supplémentaire. Quand cette option est activée, une erreur de configuration empêche complètement l'accès
à un service. Sans cette option, et en présence d'une erreur de configuration, l'accès sera permis, mais
la configuration souhaitée ne sera pas utilisée.
# These must be in the default section
config_diagnostics = 1
openssl_conf = openssl_init
[openssl_init]
oid_section = oids
providers = providers
alg_section = evp_properties
ssl_conf = ssl_configuration
engines = engines
random = random
[oids]
... new oids here ...
[providers]
... provider stuff here ...
[evp_properties]
... EVP properties here ...
[ssl_configuration]
... SSL/TLS configuration properties here ...
[engines]
... engine properties here ...
[random]
... random properties here ...
La sémantique de chacun des modules est décrite ci-dessous. La phrase « dans la section
d'initialisation » fait référence à la section identifiée par openssl_conf ou un autre nom (comme
openssl_init dans l'exemple ci-dessus). Les exemples ci-dessous partent du principe que la configuration
ci-dessus est utilisée pour spécifier les sections individuelles.
Configuration de l'identifiant d'objet ASN.1
Le nom oid_section dans la section d'initialisation désigne la section qui fournit les paires nom/valeur
des identifiants d'objet (« OID »). Le nom est le nom court ; la valeur est un nom long facultatif suivi
d'une virgule et de la valeur numérique. Même si certaines commandes OpenSSL possèdent leur propre
section pour spécifier les OID, cette section les rend disponibles pour la totalité des commandes et des
applications.
[oids]
shortName = a very long OID name, 1.2.3.4
newoid1 = 1.2.3.4.1
some_other_oid = 1.2.3.5
Si une configuration complète comprenant le fragment ci-dessus est dans le fichier exemple.cnf, la ligne
de commande suivante :
OPENSSL_CONF=example.cnf openssl asn1parse -genstr OID:1.2.3.4.1
produira :
0:d=0 hl=2 l= 4 prim: OBJECT :newoid1
montrant que l'OID « nouvel_oid1 » a été ajouté en tant que « 1.2.3.4.1 ».
Configuration de fournisseur
Le nom providers dans la section d'initialisation désigne la section qui contient la configuration du
fournisseur de chiffrement. Chacune des affectations nom/valeur dans cette section désigne un fournisseur
et pointe vers la section de configuration correspondante. La section spécifique au fournisseur est
utilisée pour indiquer comment charger le module, l'activer et définir d'autres paramètres.
Dans la section fournisseur, les noms suivants signifient :
identity
Cela est utilisé pour spécifier un nom alternatif qui outrepasse le nom par défaut spécifié dans la
liste des fournisseurs, par exemple :
[providers]
foo = foo_provider
[foo_provider]
identity = my_fips_module
module
Spécifie le chemin du module à charger (habituellement une bibliothèque partagée).
activate
S'il est présent et défini à une des valeurs yes, on, true ou 1, le fournisseur associé sera activé.
À l'inverse, définir cette valeur à no, off, false ou 0 empêchera l'activation du fournisseur. Les
réglages peuvent être donnés en minuscule ou en capitale. Définir activate à une autre valeur ou
omettre une valeur de réglage aboutira à une erreur.
= item soft_load
Si activé, notifier à la bibliothèque de nettoyer la pile d'erreur en cas d'échec d'activation du
fournisseur requis. Une valeur de 1, yes, true ou on (en minuscule ou en capitale) activera ce
réglage, tandis qu'une valeur de 0, no, false, ou off (aussi en minuscule ou en capitale) désactivera
ce réglage. Toute autre valeur produira une erreur. Notez que la valeur par défaut de ce réglage est
off, s'il n'est pas fourni.
Tous les paramètres dans la section ainsi que dans les sous-sections sont disponibles pour le
fournisseur.
Le fournisseur par défaut et son activation
Si aucun fournisseur n'est activé explicitement, celui par défaut le sera implicitement. Voir
OSSL_PROVIDER-default(7) pour plus de détails.
Si vous ajoutez une section qui active explicitement un ou plusieurs autres fournisseurs, vous aurez
probablement à activer explicitement le fournisseur par défaut, sinon il devient non disponible dans
openSSL. Cela peut rendre le système indisponible à distance.
Configuration d'EVP
Le nom alg_section dans la section d'initialisation désigne la section qui contient les propriétés de
l'algorithme lors de l'utilisation de l'API EVP.
Dans la section de propriétés de l'algorithme, les noms suivants signifient :
default_properties
La valeur peut être n'importe quelle valeur autorisée comme chaîne de requête de propriété pour
EVP_set_default_properties().
fips_mode (obsolète)
La valeur est booléenne et peut être yes ou no. Si la valeur est yes, c'est exactement l'équivalent
de :
default_properties = fips=yes
Si la valeur est no, rien ne se passe. L'utilisation de ce nom est obsolète et, s'il est utilisé, ce
doit être le seul nom de la section.
Configuration de SSL
Le nom ssl_conf dans la section d'initialisation désigne la section qui contient la liste des
configurations de SSL/TLS. Comme pour les fournisseurs, chaque nom dans cette section identifie une
section avec la configuration correspondante. Par exemple :
[ssl_configuration]
server = server_tls_config
client = client_tls_config
system_default = tls_system_default
[server_tls_config]
... configuration for SSL/TLS servers ...
[client_tls_config]
... configuration for SSL/TLS clients ...
Le nom de configuration system_default possède une signification particulière. S'il existe, il est
appliqué chaque fois qu'un objet SSL_CTX est créé. Par exemple, pour imposer au niveau du système des
versions minimales des protocoles TLS et DTLS.
[tls_system_default]
MinProtocol = TLSv1.2
MinProtocol = DTLSv1.2
Le protocole minimal de TLS est appliqué aux objets 1SSL_CTX basés sur TLS et le protocole minimal de
DTLS est appliqué à ceux qui sont basés sur DTLS. Il en est de même pour les versions maximales définies
par MaxProtocol.
Chaque section de configuration est constituée de paires nom/valeur qui sont analysées par
SSL_CONF_cmd(3) appelé par SSL_CTX_config() ou SSL_config() de façon appropriée. Notez que tout caractère
précédent un point initial dans la section de configuration est ignoré, de manière que la même commande
peut être utilisée plusieurs fois. C'est probablement particulièrement utile pour charger différents
types de clé, comme ceci :
[server_tls_config]
RSA.Certificate = server-rsa.pem
ECDSA.Certificate = server-ecdsa.pem
Configuration du moteur
Le nom engines dans la section d'initialisation désigne la section qui contient la liste des
configurations de MOTEUR. Comme pour les fournisseurs, chaque nom dans cette section identifie un moteur
avec la configuration correspondante. La section spécifique au moteur est utilisée pour indiquer comment
charger le moteur, l'activer et définir d'autres paramètres.
Dans une section moteur, les noms suivants signifient :
enabled_id
Ce nom est utilisé pour spécifier un nom alternatif qui outrepasse le nom par défaut spécifié dans la
liste des moteurs. S'il est présent, il doit être en premier, par exemple :
[engines]
foo = foo_engine
[foo_engine]
engine_id = myfoo
dynamic_path
Ce nom charge et ajoute un MOTEUR à partir du chemin donné. C'est équivalent à l'envoi des contrôles
SO_PATH avec l'argument de chemin suivi par LIST_ADD avec la valeur 2 et LOAD au MOTEUR dynamique. Si
ce n'est pas le comportement voulu, des contrôles alternatifs peuvent être envoyés directement au
MOTEUR dynamique en utilisant les commandes de contrôle.
init
Ce nom détermine s'il faut initialiser le MOTEUR. Si la valeur est 0, le MOTEUR ne sera pas
initialisé ; si la valeur est 1, une tentative immédiate d’initialiser le MOTEUR est réalisée. Si la
commande init n'est pas présente, alors une tentative d’initialiser le MOTEUR sera effectuée après le
traitement de toutes les commandes de la section.
default_algorithms
Ce nom définit les algorithmes par défaut qu’un MOTEUR fournira en utilisant la fonction
ENGINE_set_default_string().
Tout autre nom est utilisé pour nommer la commande de contrôle envoyée au MOTEUR et la valeur est
l'argument passé à la commande. La valeur particulière EMPTY signifie qu'aucune valeur n'est envoyée à la
commande. Par exemple :
[engines]
foo = foo_engine
[foo_engine]
dynamic_path = /some/path/fooengine.so
some_ctrl = some_value
default_algorithms = ALL
other_ctrl = EMPTY
Configuration de l'aléa
Le nom random dans la section d'initialisation désigne la section contenant la configuration du
générateur de nombres aléatoires.
Dans la section aléa, les noms suivants ont la signification :
random
Ce nom est utilisé pour spécifier le générateur de bits aléatoires, par exemple :
[random]
random = CTR-DRBG
Les générateurs de bits aléatoires disponibles sont les suivants :
CTR-DRBG
HASH-DRBG
HMAC-DRBG
cipher
Le nom choisi spécifie le chiffrement un générateur de bits aléatoires CTR-DRBG utilisera. Les autres
générateurs de bits aléatoires ignorent ce nom. La valeur par défaut est AES-256-CTR.
digest
Ce nom spécifie quel condensé les générateurs de bits aléatoires HASH-DRBG ou HMAC-DRBG utiliseront.
Les autres générateurs de bits aléatoires ignorent ce nom.
properties
Ce nom définit la requête de propriété utilisée pour récupérer le générateur de bits aléatoires et
les algorithmes sous-jacents.
seed
Ce nom définit la source d'aléa à utiliser. Par défaut, SEED-SRC sera utilisé en dehors du
fournisseur FIPS. Le fournisseur FIPS utilise des rappels pour accéder aux mêmes sources d'aléa en
dehors des limites validées.
seed-properties
Ce nom définit la requête de propriété utilisée pour récupérer la source d'aléa.
random_provider
This sets the provider to use for the RAND_bytes(3) calls instead of the built-in entropy sources. It
defaults to "fips". If the named provider is not loaded, the built-in entropy sources will be used.
EXEMPLES
Cet exemple montre comment utiliser les guillemets et les échappements.
# This is the default section.
HOME = /temp
configdir = $ENV::HOME/config
[ section_one ]
# Quotes permit leading and trailing whitespace
any = " any variable name "
other = A string that can \
cover several lines \
by including \\ characters
message = Hello World\n
[ section_two ]
greeting = $section_one::message
Cet exemple montre comment obtenir le développement des variables d'environnement de façon sûre. Dans
l'exemple, la variable fichier_temporaire est censée se référer à un fichier temporaire, et la variable
d'environnement TEMP ou TMP, si elle est présente, spécifie le répertoire où le fichier doit être placé.
Dans la mesure où la section par défaut est vérifiée pour voir si la variable n'existe pas, il est
possible de définir la valeur par défaut de TMP à /tmp et celle de TEMP à TMP.
# These two lines must be in the default section.
TMP = /tmp
TEMP = $ENV::TMP
# This can be used anywhere
tmpfile = ${ENV::TEMP}/tmp.filename
Cet exemple montre comment faire appliquer le mode FIPS pour l'application exemple.
sample = fips_config
[fips_config]
alg_section = evp_properties
[evp_properties]
default_properties = "fips=yes"
ENVIRONNEMENT
OPENSSL_CONF
Le chemin vers le fichier de configuration ou une chaîne vide pour aucun. Ignoré dans les programmes
set-user-ID et set-group-ID.
OPENSSL_ENGINES
Le chemin vers le répertoire des moteurs. Ignoré dans les programmes set-user-ID et set-group-ID.
OPENSSL_MODULES
Le chemin vers le répertoire des modules OpenSSL tels que les fournisseurs (provider). Ignoré dans
les programmes set-user-ID et set-group-ID.
OPENSSL_CONF_INCLUDE
Le chemin optionnel à ajouter au début de tous les chemins .include.
BOGUES
Rien ne permet d'inclure des caractères à l'aide de la forme octale \nnn. Les chaînes sont toutes
terminées par NULL, donc NULL ne peut pas faire partie de la valeur.
La protection par échappement n'est pas tout à fait correcte : si vous voulez utiliser des séquences
d'échappement comme \n, vous ne pouvez pas utiliser de guillemets de protection sur la même ligne.
Le fait qu'un seul répertoire peut être ouvert et lu à la fois peut être considéré comme un bogue et il
devrait être corrigé.
HISTORIQUE
Une API non documentée, NCONF_WIN32(), utilisait un jeu de règles légèrement différentes destinées à être
adaptées à la plateforme Windows de Microsoft. Plus précisément, le caractère barre oblique inversée
n'était pas un caractère d'échappement et pouvait être utilisé dans les chemins, seuls les guillemets
doubles étaient reconnus et les commentaires commençaient par un point-virgule. Cette fonction est
obsolète depuis OpenSSL 3.0 ; les applications avec des fichiers de configuration qui utilisent cette
syntaxe doivent être modifiées.
VOIR AUSSI
openssl-x509(1), openssl-req(1), openssl-ca(1), openssl-fipsinstall(1), ASN1_generate_nconf(3),
EVP_set_default_properties(3), CONF_modules_load(3), CONF_modules_load_file(3), RAND_bytes(3),
fips_config(5), and x509v3_config(5).
COPYRIGHT
Copyright 2000-2025 Les auteurs du projet OpenSSL. Tous droits réservés.
Sous licence Apache 2.0 (la « Licence »). Vous ne pouvez utiliser ce fichier que conformément avec la
Licence. Vous trouverez une copie dans le fichier LICENSE de la distribution du source ou à l'adresse
<https://www.openssl.org/source/license.html>.
TRADUCTION
La traduction française de cette page de manuel a été créée par arne, tv, Montanes David
<montanes.david@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, David Prévot
<david@tilapin.org>, Celia Boudjemai <celisou2008@gmail.com> et Jean-Pierre Giraud <jean-
pierregiraud@neuf.fr>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License
version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à
debian-l10n-french@lists.debian.org.
3.5.0 28 mai 2025 CONFIG(5SSL)