Provided by: manpages-ro_4.27.0-1_all 

NUME
config - fișiere de configurare ale bibliotecii OpenSSL CONF
DESCRIERE
Această pagină documentează sintaxa fișierelor de configurare OpenSSL, așa cum sunt analizate de
NCONF_load(3) și funcțiile conexe. Acest format este utilizat de multe dintre comenzile OpenSSL și pentru
a inițializa bibliotecile atunci când sunt utilizate de orice aplicație.
Prima parte descrie sintaxa generală a fișierelor de configurare, iar secțiunile următoare descriu
semantica modulelor individuale. Alte module sunt descrise în fips_config(5) și x509v3_config(5). Sintaxa
pentru definirea valorilor ASN.1 este descrisă în ASN1_generate_nconf(3).
SINTAXĂ
Un fișier de configurare este o serie de linii Liniile goale și spațiul alb dintre elementele unei linii
nu au nicio semnificație. Un comentariu începe cu un caracter #; restul liniei este ignorat. Dacă # este
primul caracter fără spațiu dintr-o linie, întreaga linie este ignorată.
Directive
Două directive pot fi utilizate pentru a controla analizarea fișierelor de configurare: .include și
.pragma.
Pentru compatibilitate cu versiunile mai vechi ale OpenSSL, un semn egal după directivă va fi ignorat.
Versiunile mai vechi îl vor trata ca pe o atribuire, deci trebuie să aveți grijă dacă diferența de
semantică este importantă.
Un fișier poate include alte fișiere folosind sintaxa include:
.include [=] nume-rută
Dacă nume-rută este un simplu nume de fișier, fișierul respectiv este inclus direct în acel punct.
Fișierele incluse pot avea instrucțiuni .include care specifică alte fișiere. Dacă nume-rută este un
director, toate fișierele din directorul respectiv care au extensia „.cnf” sau „.conf” vor fi incluse;
(acest lucru este disponibil numai pe sistemele cu suport POSIX IO). Orice subdirectoare găsite în
interiorul nume-rută sunt ignorate. În mod similar, dacă un fișier este deschis în timp ce se scanează un
director, iar fișierul respectiv are o directivă .include care specifică un director, aceasta este de
asemenea ignorată.
Ca regulă generală, nume-rută trebuie să fie o rută absolută; acest lucru poate fi impus cu pragmele
abspath și includedir, descrise mai jos. Variabila de mediu OPENSSL_CONF_INCLUDE, dacă există, este
antepusă la toate numele de rută relative. Dacă numele de rută este încă relativ, acesta este interpretat
pe baza directorului de lucru curent.
Pentru a solicita ca toate includerile de fișiere să numească rute absolute, utilizați următoarea
directivă:
.pragma [=] abspath:valoare
Comportamentul implicit, în care valoare este false sau off, este de a permite rute relative. Pentru a
solicita ca toate numele de rută .include să fie rute absolute, utilizați o valoare valoare de true sau
on.
În aceste fișiere, semnul dolarului, $, este utilizat pentru a face trimitere la o variabilă, așa cum
este descris mai jos. Cu toate acestea, pe unele platforme, este obișnuit să se trateze $ ca un caracter
obișnuit în numele simbolurilor. Suportul pentru acest comportament poate fi realizat cu următoarea
directivă:
.pragma [=] dollarid:valoare
Comportamentul implicit, în cazul în care valoare este false sau off, este de a trata semnul de dolar ca
indicând un nume de variabilă; „foo$bar” este interpretat ca „foo” urmat de expansiunea variabilei „bar”.
Dacă valoare este true sau on, atunci „foo$bar” este un nume unic de șapte caractere, iar expansiunile
variabilelor trebuie specificate folosind acolade sau paranteze.
.pragma [=] includedir:valoare
Dacă un nume de rută relativ este specificat în directiva .include, iar variabila de mediu
OPENSSL_CONF_INCLUDE nu există, atunci valoarea pragmei includedir, dacă există, este anexată la numele
de rută.
Configurări
Un fișier de configurare este împărțit într-un număr de secțiuni. O secțiune începe cu numele secțiunii
între paranteze drepte și se termină când începe o nouă secțiune sau la sfârșitul fișierului. Numele
secțiunii poate fi format din caractere alfanumerice și liniuțe de subliniere. Spațiul alb dintre nume și
paranteze este eliminat.
Prima secțiune a unui fișier de configurare este specială și este denumită secțiunea implicită -
„default”. Această secțiune este de obicei fără nume și se întinde de la începutul fișierului până la
prima secțiune cu nume. Atunci când se caută un nume, acesta este căutat mai întâi în secțiunea curentă
sau numită și apoi în secțiunea implicită, dacă este necesar.
Mediul este asociat unei secțiuni numite ENV.
Într-o secțiune se află o serie de atribuiri de nume/valori, descrise mai detaliat mai jos. Reamintim că
parantezele drepte afișate în acest exemplu sunt obligatorii, nu opționale:
[ secțiune ]
nume1 = Aceasta este valoarea1
nume2 = O altă valoare
...
[ secțiune-nouă ]
nume1 = Noua valoare1
nume3 = Valoarea 3
nume poate conține orice caractere alfanumerice, precum și câteva semne de punctuație, cum ar fi . , ; și
_. Spațiul alb după nume și înainte de semnul egal este ignorat.
În cazul în care un nume se repetă în aceeași secțiune, toate valorile, cu excepția ultimei, sunt
ignorate. În anumite circumstanțe, cum ar fi în cazul DN-urilor certificatelor, același câmp poate apărea
de mai multe ori. Pentru a permite acest lucru, comenzi precum openssl-req(1) ignoră orice text de
început care este precedat de un punct. De exemplu:
1.OU = Primul OU
2.OU = Al doilea OU
valoare constă din șirul care urmează caracterului = până la sfârșitul liniei, cu eliminarea spațiilor
albe de la începutul și sfârșitul acestuia.
Șirul de valori este supus expansiunii variabilei. Textul $var sau "${var}" inserează valoarea variabilei
numite din secțiunea curentă. Pentru a utiliza o valoare din altă secțiune, utilizați $section::nume sau
"${section::nume}". Prin utilizarea $ENV::nume, valoarea variabilei de mediu specificate va fi înlocuită.
Variabilele trebuie să fie definite înainte de a se face referire la valoarea lor, altfel se semnalează o
eroare și fișierul nu se va încărca. Acest lucru poate fi rezolvat prin specificarea unei valori
implicite în secțiunea default (implicită) înainte ca variabila să fie utilizată.
Orice definiții de nume/valoare dintr-o secțiune ENV sunt disponibile pentru fișierul de configurare, dar
nu sunt propagate în mediu.
Este o eroare dacă valoarea depășește 64k.
Este posibilă eludarea anumitor caractere prin utilizarea unei singure ghilimele ' sau a unei ghilimele
duble " în jurul valorii sau prin utilizarea unei bare inverse \ înaintea caracterului, Prin
transformarea ultimului caracter al unei linii într-un \, un șir valoare poate fi întins pe mai multe
linii. În plus, sunt recunoscute secvențele \n, \r, \b și \t.
Regulile de extindere și de eludare descrise mai sus, care se aplică la valoare, se aplică și la numele
rutei directivei .include.
CONFIGURAREA BIBLIOTECII OPENSSL
Secțiunile de mai jos utilizează termenul informal modul pentru a se referi la o parte din
funcționalitatea OpenSSL. Acesta nu este același cu termenul formal modul FIPS, de exemplu.
Configurația OpenSSL caută valoarea lui openssl_conf în secțiunea implicită și o ia ca nume al unei
secțiuni care specifică modul de configurare a oricăror module din bibliotecă. Nu este o eroare să lăsați
orice modul în configurația sa implicită. O aplicație poate specifica un nume diferit apelând direct
CONF_modules_load_file(), de exemplu.
OpenSSL verifică, de asemenea, valoarea lui config_diagnostics. Dacă aceasta există și are o valoare
numerică diferită de zero, orice fanioane de suprimare a erorilor transmise către CONF_modules_load() vor
fi ignorate. Această opțiune este utilă pentru diagnosticarea configurărilor greșite, dar utilizarea sa
în producție necesită o analiză suplimentară. Cu această opțiune activată, o eroare de configurare va
împiedica complet accesul la un serviciu. Fără această opțiune și în prezența unei erori de configurare,
accesul va fi permis, dar configurația dorită nu va fi utilizată.
# Acestea trebuie să fie în secțiunea implicită
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]
... noi oid-uri aici ...
[providers]
... chestii despre furnizori aici ...
[evp_properties]
... proprietățile EVP aici ...
[ssl_configuration]
... proprietăți de configurare SSL/TLS aici ...
[engines]
... proprietățile motoarelor aici ...
[random]
... proprietățile pentru aleatoriu aici ...
Semantica fiecărui modul este descrisă mai jos. Expresia „în secțiunea de inițializare” se referă la
secțiunea identificată prin openssl_conf sau alt nume (dat ca openssl_init în exemplul de mai sus).
Exemplele de mai jos presupun că configurația de mai sus este utilizată pentru a specifica secțiunile
individuale.
Configurarea identificatorului de obiect ASN.1
Numele oid_section din secțiunea de inițializare numește secțiunea care conține perechi nume/valoare de
OID-uri. Numele este numele scurt; valoarea este un nume lung opțional urmat de o virgulă și de valoarea
numerică. În timp ce unele comenzi OpenSSL au propria secțiune pentru specificarea OID-urilor, această
secțiune le face disponibile pentru toate comenzile și aplicațiile.
[oids]
shortName = un nume OID foarte lung, 1.2.3.4
oid1-nou = 1.2.3.4.1
un_alt_oid = 1.2.3.5
Dacă o configurație completă cu fragmentul de mai sus se află în fișierul exemplu.cnf, atunci următoarea
linie de comandă:
OPENSSL_CONF=exemplu.cnf openssl asn1parse -genstr OID:1.2.3.4.1
va genera:
0:d=0 hl=2 l= 4 prim: OBJECT :oid1-nou
arătând că OID-ul „oid1-nou” a fost adăugat ca „1.2.3.4.1”.
Configurarea furnizorului
Numele providers din secțiunea de inițializare numește secțiunea care conține configurația furnizorului
criptografic. Atribuirile nume/valoare din această secțiune denumesc fiecare un furnizor și indică
secțiunea de configurare pentru furnizorul respectiv. Secțiunea specifică furnizorului este utilizată
pentru a specifica modul de încărcare a modulului, activarea acestuia și definirea altor parametri.
În cadrul unei secțiuni de furnizori (providers), următoarele denumiri au semnificația următoare:
identity
Aceasta este utilizată pentru a specifica un nume alternativ, care înlocuiește numele implicit
specificat în lista furnizorilor. De exemplu:
[providers]
foo = furnizor-foo
[furnizor-foo]
identity = modulul-meu-fips
module
Specifică ruta către modulul (de obicei o bibliotecă partajată) care trebuie încărcat.
activate
Dacă este prezentă și definită la una dintre valorile yes, on, true sau 1, atunci furnizorul asociat
va fi activat. Dimpotrivă, definirea acestei valori la no, off, false sau 0 va împiedica activarea
furnizorului. Definițiile pot fi date cu majuscule sau minuscule. Definirea activării la orice altă
valoare sau omiterea unei valori de configurare va duce la o eroare.
= element soft_load
Dacă este activată, informează biblioteca să șteargă stiva de erori în cazul neactivării furnizorului
solicitat. O valoare de 1, yes, true sau on (în minuscule sau majuscule) va activa această opțiune,
în timp ce o valoare de 0, no, false sau off (tot în minuscule sau majuscule) va dezactiva această
opțiune. Orice altă valoare va produce o eroare. Rețineți că această opțiune are valoarea implicită
off dacă nu este furnizată
Toți parametrii din secțiune, precum și din subsecțiuni sunt puse la dispoziția furnizorului.
Furnizorul implicit și activarea acestuia
Dacă nu este activat în mod explicit niciun furnizor, cel implicit este activat în mod implicit.
Consultați OSSL_PROVIDER-default(7) pentru mai multe detalii.
Dacă adăugați o secțiune care activează în mod explicit orice alt furnizor (furnizori), cel mai probabil
trebuie să activați în mod explicit furnizorul implicit, altfel acesta devine indisponibil în openssl.
Aceasta poate face ca sistemul să nu fie disponibil de la distanță.
Configurarea EVP
Numele alg_section din secțiunea de inițializare denumește secțiunea care conține proprietățile
algoritmice atunci când se utilizează API-ul EVP.
În secțiunea proprietăți ale algoritmului, următoarele denumiri au semnificația următoare:
default_properties
Valoarea poate fi orice este acceptabil ca șir de interogare a proprietății pentru
EVP_set_default_properties().
fips_mode (depreciat)
Valoarea este un boolean care poate fi yes sau no. Dacă valoarea este yes, aceasta este echivalentă
cu:
default_properties = fips=yes
Dacă valoarea este no, nu se întâmplă nimic. Utilizarea acestui nume este depreciată și, dacă este
utilizat, trebuie să fie singurul nume din secțiune.
Configurarea SSL
Numele ssl_conf din secțiunea de inițializare denumește secțiunea care conține lista configurațiilor
SSL/TLS. La fel ca în cazul furnizorilor, fiecare nume din această secțiune identifică o secțiune cu
configurația pentru numele respectiv. De exemplu:
[ssl_configuration]
server = server_tls_config
client = client_tls_config
system_default = tls_system_default
[server_tls_config]
... configurarea pentru servere SSL/TLS ...
[client_tls_config]
... configurarea pentru clienți SSL/TLS ...
Numele configurației system_default are o semnificație specială. Dacă există, acesta se aplică ori de
câte ori se creează un obiect SSL_CTX. De exemplu, pentru a impune versiuni minime ale protocoalelor TLS
și DTLS la nivel de sistem:
[tls_system_default]
MinProtocol = TLSv1.2
MinProtocol = DTLSv1.2
Versiunea minimă a protocolului TLS se aplică obiectelor SSL_CTX care sunt bazate pe TLS, iar versiunea
minimă a protocolului DTLS obiectelor care sunt bazate pe DTLS. Același lucru este valabil și pentru
versiunile maxime stabilite cu MaxProtocol.
Fiecare secțiune de configurare constă în perechi nume/valoare care sunt analizate de SSL_CONF_cmd(3),
care va fi apelat de SSL_CTX_config() sau SSL_config(), după caz. Rețineți că orice caractere înainte de
un punct inițial în secțiunea de configurare sunt ignorate, astfel încât aceeași comandă poate fi
utilizată de mai multe ori. Acest lucru este probabil cel mai util pentru încărcarea diferitelor tipuri
de chei, după cum se arată aici:
[server_tls_config]
RSA.Certificate = server-rsa.pem
ECDSA.Certificate = server-ecdsa.pem
Configurarea motorului
Numele engines din secțiunea de inițializare numește secțiunea care conține lista de configurații de
MOTOR. Ca și în cazul furnizorilor, fiecare nume din această secțiune identifică un motor cu configurația
pentru motorul respectiv. Secțiunea specifică motorului este utilizată pentru a specifica modul de
încărcare a motorului, activarea acestuia și definirea altor parametri.
În cadrul unei secțiuni a motorului, următoarele denumiri au semnificația următoare:
engine_id
Acesta este utilizat pentru a specifica un nume alternativ, care înlocuiește numele implicit
specificat în lista de motoare. Dacă este prezent, trebuie să fie primul. De exemplu:
[engines]
foo = motor-foo
[foo_engine]
engine_id = al_meu-foo
dynamic_path
Aceasta încarcă și adaugă un MOTOR din ruta dată. Este echivalent cu trimiterea ctrl-urilor SO_PATH
cu argumentul de rută urmat de LIST_ADD cu valoarea 2 și LOAD către MOTORUL dinamic. Dacă acesta nu
este comportamentul necesar, atunci se pot trimite ctrl-uri alternative direct către MOTORUL dinamic
folosind comenzile ctrl.
init
Specifică dacă se inițializează MOTORUL. Dacă valoarea este 0, MOTORUL nu va fi inițializat, dacă
valoarea este 1 se încearcă inițializarea imediată a MOTORULUI. Dacă comanda init nu este prezentă,
atunci se va încerca inițializarea MOTORULUI după ce toate comenzile din secțiunea sa au fost
procesate.
default_algorithms
Aceasta stabilește algoritmii impliciți pe care un MOTOR îi va furniza utilizând funcția
ENGINE_set_default_string().
Toate celelalte nume sunt considerate a fi numele unei comenzi ctrl care este trimisă către MOTOR, iar
valoarea este argumentul transmis împreună cu comanda. Valoarea specială EMPTY înseamnă că nicio valoare
nu este trimisă împreună cu comanda. De exemplu:
[engines]
foo = motor-foo
[motor-foo]
dynamic_path = /o/rută/motorfoo.so
some_ctrl = o_valoare
default_algorithms = ALL
other_ctrl = EMPTY
Configurarea generatorului de numere aleatorii
Numele random din secțiunea de inițializare denumește secțiunea care conține parametrii generatorului de
numere aleatorii.
În secțiunea „random”, următoarele nume au semnificația:
random
Acesta este utilizat pentru a specifica generatorul de biți aleatori. De exemplu:
[random]
random = CTR-DRBG
Generatoarele de biți aleatorii disponibile sunt:
CTR-DRBG
HASH-DRBG
HMAC-DRBG
cipher
Aceasta specifică ce algoritm de criptare va utiliza generatorul de biți aleatori CTR-DRBG. Alte
generatoare de biți aleatori ignoră acest nume. Valoarea implicită este AES-256-CTR.
digest
Aceasta specifică ce algoritm de sumă de control vor utiliza generatoarele de biți aleatorii
HASH-DRBG sau HMAC-DRBG. Alte generatoare de biți aleatorii ignoră acest nume.
properties
Aceasta definește interogarea proprietății utilizată la preluarea generatorului de biți aleatori și a
oricăror algoritmi subiacenți.
seed
Aceasta definește sursa de aleatoriu care ar trebui utilizată. În mod implicit, SEED-SRC va fi
utilizată în afara furnizorului FIPS. Furnizorul FIPS utilizează reapelări pentru a accesa aceleași
surse de aleatoriu din afara limitei validate.
seed_properties
Aceasta definește interogarea proprietății utilizată la preluarea sursei de biți aleatorii.
random_provider
Aceasta stabilește furnizorul care trebuie utilizat pentru apelurile RAND_bytes(3) în locul surselor
de entropie încorporate. Valoarea implicită este „fips”. Dacă furnizorul numit nu este încărcat, vor
fi utilizate sursele de entropie încorporate.
EXEMPLE
Acest exemplu arată cum se utilizează ghilimelele și caracterele de eludare.
# Aceasta este secțiunea implicită.
HOME = /temp
configdir = $ENV::HOME/config
[ section_one ]
# Ghilimelele permit spații albe la început și la sfârșit
any = "orice nume de variabilă"
other = Un șir care poate \
acoperi mai multe linii \
prin includerea \\ caracterelor
message = Salutare lume!\n
[ section_two ]
greeting = $section_one::message
Acest exemplu arată cum să se extindă variabilele de mediu în condiții de siguranță. În acest exemplu,
variabila tempfile este destinată să se refere la un fișier temporar, iar variabila de mediu TEMP sau
TMP, dacă este prezentă, specifică directorul în care ar trebui plasat fișierul. Deoarece secțiunea
implicită este verificată dacă o variabilă nu există, este posibil să se definească ca TMP să fie
implicit /tmp, iar TEMP să fie implicit TMP.
# Aceste două linii trebuie să fie în secțiunea implicită.
TMP = /tmp
TEMP = $ENV::TMP
# Aceasta poate fi utilizată oriunde
tmpfile = ${ENV::TEMP}/tmp.nume-fișier
Acest exemplu arată cum se poate aplica modul FIPS pentru aplicația sample.
sample = fips_config
[fips_config]
alg_section = evp_properties
[evp_properties]
default_properties = "fips=yes"
MEDIU
OPENSSL_CONF
Ruta către fișierul de configurare sau șirul gol pentru niciunul. Ignorată în programele set-user-ID
și set-group-ID.
OPENSSL_ENGINES
Ruta către directorul motoarelor. Ignorată în programele set-user-ID și set-group-ID.
OPENSSL_MODULES
Ruta către directorul cu module OpenSSL, cum ar fi furnizorii. Ignorată în programele set-user-ID și
set-group-ID.
OPENSSL_CONF_INCLUDE
Ruta opțională care se adaugă în fața tuturor rutelor .include.
ERORI
Nu există nicio modalitate de a include caractere folosind forma octală \nnn. Șirurile de caractere sunt
toate terminate cu nul, astfel încât nulurile nu pot face parte din valoare.
Eludarea nu este chiar corectă: dacă doriți să utilizați secvențe precum \n, nu puteți utiliza nici o
eludare a ghilimelelor pe aceeași linie.
Limita conform căreia un singur director poate fi deschis și citit în același timp poate fi considerată o
eroare și ar trebui remediată.
ISTORIC
Un API nedocumentat, NCONF_WIN32(), folosea un set ușor diferit de reguli de analizare care erau
destinate să fie adaptate platformei Microsoft Windows. În special, caracterul de bară oblică inversă nu
era un caracter de eludare și putea fi utilizat în nume de rute, numai caracterul de ghilimele duble era
recunoscut, iar comentariile începeau cu punct și virgulă. Această funcție a fost depreciată în OpenSSL
3.0; aplicațiile cu fișiere de configurare care utilizează această sintaxă vor trebui să fie modificate.
CONSULTAȚI ȘI
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).
DREPTURI DE AUTOR
Drepturi de autor 2000-2025 The OpenSSL Project Authors. Toate drepturile rezervate.
Licențiat sub Licența Apache 2.0 („License”). Nu aveți voie să utilizați acest fișier decât în
conformitate cu licența. Puteți obține o copie din fișierul LICENSE din distribuția sursei sau de la
<https://www.openssl.org/source/license.html>.
TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu
<remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o
versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO
RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
ro@lists.sourceforge.net.
3.5.0 28 mai 2025 CONFIGURARE(5SSL)