X 509 versiunea 3. Prezentare generală a certificatului electronic X.509

format certificat X.509

X.509 este un alt format foarte comun. Toate certificatele X.509 respectă standard international ITU-T X.509; astfel (teoretic), un certificat X.509 creat pentru o aplicație poate fi folosit în oricare alta care acceptă acest standard. În practică, însă, s-a dezvoltat situația că diferite companii își creează propriile extensii pentru X.509, care nu sunt toate compatibile între ele.

Fiecare certificat necesită ca cineva să verifice relația dintre cheia publică și informațiile care identifică proprietarul cheii. Când are de-a face cu un certificat PGP, oricine poate acționa ca martor la informațiile conținute în acesta (cu excepția cazurilor în care această capacitate este limitată intenționat de politica de securitate). Dar în cazul certificatelor X.509, doar o Autoritate de Certificare, sau cineva special autorizat de aceasta pentru acest rol, poate fi martor. (Rețineți că certificatele PGP acceptă pe deplin o structură de încredere ierarhică care utilizează un CA pentru a certifica certificatele.)

Un certificat X.509 este un set de câmpuri standard care conțin informații despre un utilizator sau dispozitiv și cheia publică corespunzătoare. Standardul X.509 definește ce informații sunt incluse în certificat și cum sunt codificate (formatul de date).

Un certificat X.509 conține următoarele informații:

Versiunea X.509 - indică pe ce versiune a standardului X.509 se bazează certificatul dat, care determină ce informații pot fi conținute în acesta.

Cheia publică a deținătorului certificatului este cheia publică împreună cu identificatorul algoritmului utilizat (indicând criptosistemul căruia îi aparține cheia dată) și alte informații despre parametrii cheii.

Numărul de serie al certificatului - organizația emitentă a certificatului este obligată să îi atribuie un număr de serie unic (secvențial) pentru a-l identifica printre alte certificate emise de această organizație. Aceste informații se aplică într-un număr de cazuri; de exemplu, la revocarea unui certificat, numărul de serie al acestuia este introdus lista certificatelor revocate(Lista de revocare a certificatelor, CRL).

Identitatea unică a proprietarului cheii (sau DN, nume distinctiv- nume unic) - acest nume trebuie să fie unic și singurul din întregul Internet. DN-ul constă din mai multe subclauze și ar putea arăta cam așa:

CN=Bob Davis, [email protected] OU=PGP Engineering,

O=PGP Corporation, C=US

(Care înseamnă Nume prietenos pentru subiect, E-mail, Unitate organizațională, Organizație și, respectiv, Țară.)

Perioada de valabilitate a certificatului - data de începere a certificatului și data expirării acestuia; indică momentul în care certificatul va deveni invalid.

Nume unic al emitentului - Numele unic al organizației care a semnat certificatul. De obicei, acesta este numele autorității de certificare. Utilizarea unui certificat implică încrederea organizației care l-a semnat. (În cazurile cu certificate rădăcină, organizația emitentă - aceeași CA - o semnează singură.)

Semnătura digitală a editorului - o semnătură electronică creată de cheia privată a organizației care a emis certificatul. ID algoritm de semnare - Specifică algoritmul utilizat de CA pentru a semna certificatul.

Există o serie de diferențe fundamentale între formatele de certificat X.509 și PGP:

vă puteți crea personal propriul certificat PGP;

trebuie să solicitați și să primiți un certificat X.509 de la o autoritate de certificare; Certificatele X.509 conțin un singur nume al proprietarului certificatului;

Certificatele X.509 conțin un singur EDS, care confirmă autenticitatea certificatului.

Pentru a obține un certificat X.509, trebuie să solicitați CA să vi-l elibereze. Furnizați sistemului cheia dumneavoastră publică, ceea ce dovedește că aveți cheia privată corespunzătoare, precum și unele informații care vă identifică. Apoi semnați electronic aceste informații și trimiteți întregul pachet - cererea de certificat - către CA. CA efectuează un anumit proces pentru a verifica autenticitatea informațiilor furnizate și, dacă totul se potrivește, creează un certificat, îl semnează și vi-l returnează.

Puteți prezenta un certificat X.509 ca un certificat normal de hârtie sau un pașaport cu o cheie publică atașată. Conține numele dumneavoastră, precum și câteva informații despre dumneavoastră, plus semnătura emitentului certificatului.

Poate cel mai mare beneficiu al certificatelor X.509 este utilizarea lor în browserele Web.

Din cartea The Art of Unix Programming autor Raymond Eric Steven

Din cartea Windows Script Host pentru Windows 2000/XP autor Popov Andrei Vladimirovici

Cum să obțineți certificat digital Există trei tipuri de certificate digitale: cele create de dezvoltator, eliberate dezvoltatorului de către o organizație și primite de la o autoritate de certificare. Un certificat digital creat de un dezvoltator este folosit de obicei de acei utilizatori care

Din cartea Public Key Infrastructures autor Polyanskaya Olga Yurievna

Crearea propriului certificat Cel mai rapid mod de a vă crea propriul certificat digital este să utilizați programul SelfCert.exe inclus cu Microsoft Office 2000/XP. Prin rularea acestui utilitar, vom obține o casetă de dialog care vă permite să specificați numele celui creat

Din cartea Yandex pentru toată lumea autorul Abramzon M. G.

Suplimente la certificat Informații importante se găsesc și în suplimentele la certificat. Acestea vă permit să includeți în certificat informații care nu se află în conținutul principal, să determină valabilitatea certificatului și dacă proprietarul certificatului are drepturi de acces la un anumit

Din cartea Introducere în Criptografie autor Philipp Zimmermann

Protocolul de stare a certificatului online Protocolul de stare a certificatului online OCSP este un protocol relativ simplu (provocare-răspuns) pentru obținerea informațiilor de revocare de la o entitate de încredere numită răspuns OCSP. O solicitare OCSP constă dintr-un număr de versiune

Din carte Sistem de operare UNIX autor Robachevsky Andrey M.

Verificarea certificatelor de bază Verificarea certificatelor de bază se efectuează asupra tuturor certificatelor într-o secvență și constă într-o serie de verificări. Verificări folosind fiecare dintre cele patru grupuri de variabile de stare sunt efectuate pentru a determina dacă

Din cartea autorului

Verificarea valabilității certificatului Această verificare reușește dacă data și ora curente la momentul validării se află în perioada de valabilitate.

Din cartea autorului

Verificarea stării certificatului Această verificare reușește dacă emitentul nu a revocat certificatul. Listele CAC sunt mijloacele principale de verificare a stării unui certificat, dar pot fi utilizate alte mijloace alternative.

Din cartea autorului

Verificarea semnăturii certificatului Semnătura certificatului poate fi verificată pe baza primului grup de variabile de stat utilizând cheia publică a emitentului certificatului, utilizând parametrii corecți și utilizând algoritmul de semnătură digitală.

Din cartea autorului

Pregătirea următorului certificat Mai întâi, se efectuează o simplă validare a certificatului CA. Variabilele de stare sunt apoi actualizate pentru a reflecta valorile câmpurilor suplimentare ale certificatului. Există mai multe completări care se găsesc

Din cartea autorului

Finalizarea procesării certificatelor Când procesarea certificatului de entitate finală este finalizată, valorile de ieșire sunt setate pe baza valorilor variabilelor de stare. semnatura digitala. În câmpul de informații

Din cartea autorului

3.3.1. Format RSS Puteți citi știrile site-ului în diferite moduri. Cel mai simplu mod este să vizitezi site-ul din când în când și să vezi mesaje noi. Puteți pune un program care se conectează la un canal de știri și primește el însuși titluri sau adnotări de știri, conform

Din cartea autorului

Formatul certificatului X.509 X.509 este un alt format foarte comun. Toate certificatele X.509 sunt conforme cu standardul internațional ITU-T X.509; astfel (teoretic) un certificat X.509 creat pentru o aplicație poate fi folosit în oricare alta,

Din cartea autorului

Revocarea certificatului Un certificat poate fi utilizat doar atâta timp cât este valabil. Este periculos să te bazezi pe un certificat pentru a fi sigur și de încredere pentru totdeauna. În majoritatea organizațiilor și în toate PKI-urile, un certificat are o durată de viață limitată. Aceasta restrânge perioada în care

Din cartea autorului

Notificare de revocare a certificatului Odată ce un certificat a fost revocat, este extrem de important să anunțați toți potențialii corespondenți că acesta nu mai este valabil. Cel mai simplu mod de a notifica într-un mediu PGP este să plasați un certificat revocat

Din cartea autorului

Formatul ELF Formatul ELF are mai multe tipuri de fișiere pe care le-am numit diferit până acum, cum ar fi un fișier executabil sau un fișier obiect. Cu toate acestea, standardul ELF distinge între următoarele tipuri:1. Un fișier relocabil care conține instrucțiuni și date care pot fi

Există două tipuri de sisteme criptografice: sisteme de chei secrete (simetrice) și sisteme de chei publice (asimetrice). Aproximativ, dar de înțeles, sistemele simetrice folosesc aceeași cheie pentru operațiunile de criptare și decriptare, în timp ce sistemele asimetrice folosesc altele diferite.

În sistemele simetrice, există o problemă de distribuire a cheii secrete într-un mod sigur: ambele părți care fac schimb de informații trebuie să cunoască această cheie, dar nimeni altcineva nu ar trebui să aibă această cheie.

Sistemele asimetrice sunt aranjate astfel încât să existe două numere în ele:

  • „cheia publică a utilizatorului A”, care este utilizată pentru a cripta un mesaj destinat utilizatorului A,
  • „cheia privată a utilizatorului A”, care este folosită de acest utilizator pentru a decripta mesajele trimise către acesta.
Aceste numere formează o pereche de chei și au următoarea proprietate bună: cu o lungime suficient de mare a acestor numere, este foarte dificil, cunoscând doar cheia publică, să restabiliți valoarea cheii private.

Ultima împrejurare este foarte importantă: utilizatorul își poate publica cheia publică în locuri publice, astfel încât oricine să o poată folosi și cripta un mesaj pentru A. Prin urmare, problema distribuirii cheii secrete dispare.

Utilizatorul trebuie să-și păstreze cheia privată secretă față de persoane din afară: doriți ca numai utilizatorul să poată decripta mesajele care i-au fost trimise. Mai mult, cerința ca cheia privată să fie păstrată secretă este foarte importantă în legătură cu conceptul de semnătură digitală, despre care se discută puțin mai departe. Privind în perspectivă, să spunem că secretul cheii private este de asemenea important, deoarece numai utilizatorul ar trebui să-și poată crea propria semnătură digitală, care depinde de valoarea cheii private.

Destul de des, cheia privată este stocată pe media în formă criptată și decriptată doar pe durata unor acțiuni care necesită cunoașterea cheii private. Acest lucru crește ușor securitatea stocării cheii private, dar creează un inconvenient dacă cheia privată este nevoie de un fel de serviciu automat: (cel puțin) de fiecare dată când pornește acest serviciu, trebuie să introduceți o parolă pentru a decripta cheia.

Există, de asemenea, carduri inteligente care pot efectua operațiuni criptografice în interiorul lor, dând doar rezultatul rezultatului, dar fără a dezvălui conținutul cheii private. Furtul unei chei private de pe un smart card implementat corect ar trebui să fie foarte dificil. Cheia privată, chiar și stocată pe un smart card, poate fi protejată prin parolă. Dacă nu există o parolă, atunci oricine are un smart card în mână poate efectua acțiuni care necesită cunoașterea cheii private: valoarea cheii private în sine va rămâne secretă, dar va fi posibilă efectuarea oricăror acțiuni intenționate cu aceasta. .

Semnatura digitala

Sistemele cu cheie publică au o altă caracteristică plăcută: utilizatorul poate crea o semnătură digitală, care, atunci când este pusă document digital, poate servi drept garanție că utilizatorul, și nu altcineva, a semnat efectiv acest document.

Schema este simplă din punct de vedere conceptual: utilizatorul A, folosind cheia sa privată, efectuează o operațiune asupra datelor pe care dorește să le semneze și transmite rezultatul împreună cu datele originale oricărui alt obiect. Și chiar acest obiect, folosind doar cheia publică a utilizatorului A, poate verifica cu ușurință dacă semnătura digitală este corectă.

Subliniem încă o dată că condiția de accesibilitate a acestei chei private numai pentru proprietarul ei joacă un rol foarte important: dacă este îndeplinită, atunci utilizatorul nu poate refuza semnătura sa digitală. Aceasta se numește non-repudiere.

Una dintre utilizările unei semnături digitale este autentificarea obiectelor. Autentificarea este procesul de stabilire a „identității” unui obiect. Este clar că dacă un obiect poate semna digital, atunci această semnătură poate fi verificată, iar obiectul este asociat cu cheia sa publică. Ultimul ingredient care lipsește din această schemă de autentificare este punctul în care cheia publică și obiectul în sine sunt legate: trebuie să știm exact cine deține această cheie publică.

Autoritatea de Certificare

Problema conectării unei chei publice și a unui obiect poate fi rezolvată în moduri diferite. Una dintre cele mai simple abordări este de a face o listă de chei publice și „nume” de obiecte care se potrivesc. Numele poate fi orice identificator, cum ar fi numele de domeniu al unei mașini, Numele complet, numele de familie și patronimul unei persoane etc.; problema unicității numelor, care trebuie să apară în mod necesar, este o dificultate separată, care este de obicei rezolvată prin mijloace administrative, cum ar fi un sistem ierarhic de spațiu de nume și un fel de sistem de rezolvare a conflictelor de nume în cadrul aceluiași subspațiu de nume. Această problemă nu va fi discutată în continuare aici.

Dar abordarea listei de potriviri are o scalare foarte slabă, deoarece aceleași liste trebuie sincronizate peste tot în lume (sau mai degrabă, în partea lumii în care sunt utilizate aceste liste).

Prin urmare, au fost introduse conceptele de certificat X.509 și de autoritate de certificare. Un certificat X.509 (denumit în continuare certificat) este un conglomerat al cheii publice a utilizatorului, informații despre utilizator, un nume de certificat numit Distungiushed Name (DN) și o semnătură digitală a unei autorități de certificare care leagă toate aceste date împreună. Adică, devine posibilă asocierea cheii publice și a DN-ului utilizatorului, care poate servi ca ingredient dorit în procesul de autentificare dacă numele distinctiv al certificatului său este folosit ca identificator de utilizator. De altfel, un certificat are o dată de expirare, care limitează perioada de valabilitate a meciului creat de CA.

Desigur, problema este pur și simplu mutată în alt loc - în loc să menținem o listă mare de potriviri, acum trebuie să menținem o listă semnificativ mai mică de chei publice ale autorităților de certificare. În acest caz, cheia autorității de certificare este suficient de de încredere: autoritatea de certificare confirmă asocierea a mii de nume de utilizator cu cheile publice corespunzătoare.

De ce este necesară autentificarea? Criptarea singură nu este suficientă?

Ei bine, în primul rând, autentificarea este valoroasă în sine: sistemele informatice trebuie să-și autentifice utilizatorii pentru a decide apoi dacă să le autorizeze accesul la diverse resurse.

Dar dacă luați cheia publică a unui utilizator și doriți să îi trimiteți un mesaj criptat, atunci probabil că veți dori să vă asigurați că criptați mesajul cu cheia publică corectă, mai ales dacă primiți acea cheie de la public surse. La urma urmei, un atacator își poate plasa cheia publică, dar, în același timp, poate indica faptul că cheia aparține destinatarului tău. Și dacă nu autentificați cheia publică, atunci atacatorul, după ce a interceptat mesajul dvs. criptat, îl va putea decripta fără probleme.

Adică, introducerea unei autorități de certificare ne permite să autentificăm obiectul care deține acest certificat. Desigur, înainte de asta, trebuie să avem încredere în cheia publică a autorității de certificare. Aceasta implică două lucruri:

  1. încredere într-o autoritate de certificare în general, adică încredere în reputația acesteia,
  2. încredere că cheia publică pe care o obțineți este într-adevăr cheia publică a acestei autorități de certificare.
Din ultimul paragraf, se vede că apare din nou problema autentificării cheilor publice ale centrelor de certificare. Dar, deoarece există mult mai puține dintre aceste centre decât utilizatori, este posibil să se recurgă la măsuri administrative:
  • sunați la centrul de certificare și verificați conținutul cheii publice prin telefon,
  • veniți la centrul de certificare însuși și luați cheia publică pe un mediu,
  • aveți încredere în acele chei publice ale autorităților de certificare care sunt deja prezente într-un pachet software
  • și multe alte moduri care sunt și mai incomode decât cele deja menționate;))

Certificate de proxy

Grozav: acum avem CA de încredere, cheile lor publice, certificatele de utilizator și cheile lor private. Putem cripta mesajele și putem crea semnături digitale care sunt greu de respins.

Ce altceva? În sistemele cu mai multe componente, ceea ce se numește Single Sign-On este foarte convenabil - capacitatea de a se autentifica manual o singură dată, iar toate celelalte operațiuni de autentificare vor fi efectuate automat. Acest lucru este valabil de obicei în sistemele care vă autentifică inițial, iar apoi sistemul începe să efectueze acțiuni în numele dvs., de exemplu, să primească date, să ruleze sarcini, să le publice rezultatele etc. Aceasta se numește delegare.

Delegarea pe baza certificatelor proxy funcționează după cum urmează: după autentificarea reciprocă a utilizatorului și a serviciului care va funcționa ulterior în numele utilizatorului, serviciul creează o nouă pereche de chei și trimite cheia publică utilizatorului pentru semnare. Utilizatorul semnează această cheie publică în același mod ca o CA, dar folosește cheia privată a utilizatorului. Certificatul rezultat se numește certificat proxy.

Serviciul, care acționează în numele utilizatorului, se poate autentifica apoi folosind cheia privată (nou generată) și un certificat semnat de utilizator. Procesul de autentificare merge cam așa.

  1. Semnătura generată de serviciu este verificată. Aceasta folosește cheia publică care a fost trimisă împreună cu semnătura.
  2. Cheia publică cu care a fost verificată semnătura este autentificată. În primul rând, este verificată semnătura de pe certificatul proxy, care a fost creat folosind cheia privată a utilizatorului. Acest lucru se face folosind cheia publică a utilizatorului.
  3. În același mod, cheia publică a utilizatorului însuși este autentificată, dar datele despre autoritatea de certificare sunt deja folosite aici.
Drept urmare, se construiește ceea ce se numește un lanț de încredere, care începe cu un fel de semnătură digitală și se termină cu o semnătură digitală a unei autorități de certificare.

Folosind același mecanism, serviciul căruia i-a fost emis inițial certificatul proxy poate semna un alt certificat proxy, delegând autoritatea utilizatorului utilizatorului de-a lungul lanțului unui alt serviciu. Acesta este modul în care este implementată Single Sign-On.

  • Ghid de stil X.509, scris de Peter Gutmann. Sunt o mulțime de detalii tehnice, dar pentru unii merită citite.

Formatul și structura certificatului cheie de semnare

O descriere detaliată a structurii certificatului, inclusiv o listă a restricțiilor privind utilizarea UPC și procedura de utilizare a câmpurilor unui certificat ES calificat emis de CA FC (denumită în continuare Descrierea UPC) este aprobată de către CA FC sub forma unui document separat care face parte integrantă din prezentul Regulament.

Certificat cheie de validare semnatura electronicaîn formă electronică este un document electronic care are o structură corespunzătoare standardului ITU-T X.509 versiunea 3 a Uniunii Internaționale de Telecomunicații și recomandărilor IETF (Internet Engineering Task Force) RFC 3280 și 5280 și prezentat în codificare Base64.

Structura certificatelor cheie de semnătură produse de CA este determinată de următorul tabel:

certificat » sub formă de arbore structurilor cu capacitatea de a marca... Semnătura cererilor de publicare certificatecheisemnături". 4. Pentru a merge la... Identificator cheie". „Nume Patronimic” - numele și patronimul proprietarului certificat v format « ...
  • Ghid de administrare (2)

    management

    sisteme. „Semnarea cererilor de publicare certificate chei semnături„- permite capului să semneze transferat la TOFK... Structura fișier EDS Formarea EDS are loc folosind furnizorul criptografic " CSP CryptoPro”, versiunea 2.0 cu format ...

  • Nume

    Descriere

    Solicitant

    Organizația solicitantă

    Câmpurile de bază ale certificatului

    Număr unic

    Număr unic de certificat

    Algoritmul semnăturii

    Algoritm de semnătură

    1.2.643.2.2.3 (GOST R 34.11-2001, GOST R 34.10-2001)

    Emitentul certificatului

    Perioada de valabilitate

    Perioada de valabilitate a certificatului

    Valabil de la: zz.mm.aaaa hh:mm:ss GMT

    Valabil pentru: zz.mm.aaaa hh:mm:ss GMT

    Deținătorul certificatului

    CN = Prenume, Prenume, Patronimic;

    CN = Numele organizației

    SN=Nume;

    SN=Nume;

    GN=Nume, patronimic;

    GN=Nume, patronimic;

    O = Numele organizației solicitante;

    O = Nume sistem automatizat/Servicii/Servicii/ /Servere ale Organizației Solicitantului pentru utilizarea cărora a fost eliberat certificatul.;

    OU= Subdiviziunea structurală;

    T = Poziție;

    T = Poziție;

    L = Nume localitate;

    STRADA = Numele străzii, numărul casei, clădirea, blocul, apartamentul, camera;

    S = subiect federal;

    S = subiect federal;

    E = E-mail = Adresă E-mail proprietarul UPC

    E = EMail = Adresa de e-mail a serviciului de operare automată a sistemului

    1.2.643.100.1=OGRN=0000000000000000

    1.2.643.3.131.1.1 = INN = 000000000000

    1.2.643.100.3=SNILS=00000000000

    Nume alternativ al subiectului

    Informații suplimentare despre proprietarul certificatului

    Extensii (descrierea detaliată este furnizată în Tabelul 3 – Descrieri UPC)

    cheie publică

    Cheie publică (algoritm de semnare)

    Algoritmul semnăturii emitentului

    Algoritmul de semnare a emitentului de certificat

    GOST R 34.11/34.10-2001

    EDS al emitentului certificatului

    Semnătura editurii în conformitate cu GOST R 34.11/34.10-2001

    Extensii de certificate

    Perioada de valabilitate a cheii private

    Perioada de valabilitate a cheii private aferente certificatului

    Valabil de la (nu înainte): zz.mm.aaaa hh:mm:ss GMT

    Valabil până la (nu după): zz.mm.aaaa hh:mm:ss GMT

    Utilizarea cheii

    Extensie (descrierea detaliată este furnizată în Tabelul 3, Tabelul 4 - Descrierea SCP)

    Utilizare extinsă a cheilor

    Cheie îmbunătățită

    Extensie (descrierea detaliată este furnizată în Tabelul 3 – Descrieri UPC)

    Politica de aplicare

    Politica de aplicare

    Nu se aplică

    Politici privind certificatele

    Politici privind certificatele

    Un set de domenii de utilizare a cheilor și certificatelor din lista zonelor de utilizare înregistrate la Autoritatea de Certificare (o descriere detaliată este prezentată în Tabelul 3)

    Identificatorul cheii subiectului

    Identificatorul cheii proprietarului SKP

    Extensie (descrierea detaliată este furnizată în Tabelul 3 - Descrierea UPC)

    Identificator cheie de autoritate

    ID-ul cheii emitentului certificatului

    identificatorul cheii private persoană autorizată Autoritatea de certificare care a semnat acest certificat (descrierea detaliată este furnizată în Tabelul 3 - Descrieri UPC)

    Punct de distribuție CRL

    Punct de distribuție a listei de revocare a certificatelor

    Un set de puncte de distribuție a listei de revocare sub forma unui URL (descrierea detaliată este furnizată în Tabelul 3 - Descrieri UPC).

    Accesul la informații ale autorității

    Adresa Serviciului de stare curentă a certificatelor

    Adresa URL a aplicației web a Serviciului de stare de actualizare a certificatelor. Înregistrat în certificate, al căror statut poate fi setat prin protocolul OCSP (descrierea detaliată este prezentată în Tabelul 3 - Descrierea SCP).

    Numele comun sau CN este utilizat în general în certificatele SSL. CN este folosit pentru a defini numele serverului care va fi folosit pentru conexiunea SSL securizată. În general, acest certificat SSL este folosit pentru a securiza conexiunea între un server HTTP/S și un browser client precum Chrome, Explorer, Firefox.

    Numele comun este folosit pentru a specifica identitatea gazdei sau a serverului. Când un client încearcă să se conecteze la un server la distanță, cum ar fi serverul HTTP, va primi mai întâi certificatul SSL al acestui server. Apoi comparați numele gazdă sau numele domeniului pe care dorește să se conecteze cu numele comun furnizat în certificatul SSL. Dacă sunt aceleași, va folosi certificatul SSL pentru a cripta conexiunea.

    Nume comun reprezentat tehnic ca câmp commonName în specificația certificatului X.509. Specificația X.509 este utilizată în certificatele SSL, care este aceeași.

    Putem formula numele comenzii ca mai jos.

    Nume comun = Nume domeniu + Nume gazdă

    Nume comun = Nume domeniu + Nume gazdă

    Putem folosi următoarele nume de domeniu și gazdă ca nume comun.

    site www.site *.site

    poftut. com

    www. poftut. com

    *. poftut. com

    Nume de domeniu complet calificat (FQDN)

    Nume de domeniu complet calificat sau FQDN este utilizat cu numele de comandă interschimbabil. Numele complet calificat este folosit pentru a defini numele gazdei într-un mod strict. Mai multe detalii despre FQDN-ul pot fi găsite în următorul tutorial.

    Numele Organizatiei

    Numele organizației poate fi interpretat greșit cu numele comun. Numele organizației este numele organizației de care aparține infrastructura IT. Numele organizației nu trebuie folosit pentru numele comun, ceea ce va crea probleme de securitate.

    OS: Linux Debian/Ubuntu.
    Aplicație: OpenSSL, Nginx, Apache2.

    Iată cea mai simplă cheat sheet a procedurii de pregătire pentru achiziția unui certificat SSL/TLS, verificarea corectitudinii acestuia și utilizarea lui într-un serviciu web, extinsă cu câteva explicații.

    Noi generăm chei private și publice.

    Este foarte de dorit să efectuați lucrări cu componente certificate într-un loc închis de la accesul exterior:

    $ mkdir -p ./make-cert


    În primul rând, trebuie să creați chei de criptare RSA „închise” (alias „private”) și „deschise” (alias „publice”), care vor fi utilizate ulterior la crearea tuturor celorlalte componente ale certificatului și la autentificarea acestuia pe partea serverului web:

    $ cd ./make-cert
    $ openssl genrsa -des3 -out ./example.net.key 2048


    Amestecul de caractere pe care îl vedem într-un fișier cheie text este de fapt un container al unui set ofuscat de blocuri generate în conformitate cu algoritmul RSA al cifrurilor unice, iar unul dintre aceste blocuri - „modulul” - este cheia „publică” a pachetul de criptare asimetric utilizat în toate componentele certificatului. Toate celelalte conținuturi sunt o cheie „privată”.


    Pentru a vă familiariza cu conținutul blocurilor de containere cheie, codul acestuia poate fi extins într-o formă mai structurată:

    $ openssl rsa -noout -text -in ./example.net.key


    Cheia de criptare (privată) este, prin definiție, cea mai secretă care se află în componentele unui certificat SSL - prin urmare, implicit, este protejată de o parolă. Asigurați-vă că vă amintiți parola introdusă la solicitarea utilitarului de generare, vom avea nevoie de ea.

    Trebuie remarcat faptul că, în practică, atunci când un certificat SSL este folosit doar pentru a transfera un număr de site-uri pe HTTPS, majoritatea oamenilor preferă să nu se încurce cu un container de chei protejate prin parolă, ci îl eliberează imediat de această protecție, creând altul. alături - „fără parolă”:

    $ cd ./make-cert
    $ openssl rsa -in ./example.net.key -out ./example.net.key.decrypt


    Creați o solicitare de emitere a certificatului X.509 (CSR).

    Subsistemul însuși pentru protejarea fluxului de trafic prin SSL / TLS este implementat de obicei pe chei simetrice de sesiune generate de serverul web și browserul client în timpul negocierii inițiale a conexiunii, iar unele chei speciale de criptare prestabilite nu sunt necesare pentru aceasta (deși acestea facilitează procedura de negociere - DH -key, de exemplu). Certificatul (al standardului X.509), al cărui set de componente îl formăm treptat aici, este destinat unui fel de autentificare a unei resurse web în infrastructura Internet, unde o autoritate de certificare de încredere condiționată garantează conectarea cheia „publică” specificată în certificat și descrierea resursei prin semnarea electronică a conținutului acesteia.

    Pentru a transfera către autoritatea de certificare cheia noastră „publică” (nu întregul conținut al cheii „private”, ci doar blocul „modulus” al acesteia!) Și informații despre resursă, a cărei autenticitate confirmăm, un container special CSR ( Cererea de semnare a certificatului) este destinată. Îl creăm, specificând un container din acestea ca sursă a cheii „publice”:

    $ cd ./make-cert
    $ openssl req -new -key ./example.net.key -out ./example.net.csr


    În acest proces, va trebui să specificați informații despre proprietarul resursei pentru care este solicitat certificatul, cum ar fi:

    „Numele țării” - cod de țară din două caractere conform ISO-3166 (RU - pentru Rusia);
    „Numele statului sau al provinciei” - numele regiunii sau regiunii;
    „Numele localității” - numele orașului sau localității;
    „Numele organizației” - denumirea organizației;
    „Numele unității organizaționale” - denumirea unității (câmp opțional);
    „Nume comun” - numele de domeniu complet calificat al resursei (FQDN) pentru care se solicită certificatul;
    „Adresă de e-mail” - adresa de e-mail de contact a administratorului numelui de domeniu (câmp opțional);
    „O parolă de provocare” - (câmp opțional, necompletat);
    „Un nume de companie opțional” - un nume alternativ de companie (câmp opțional, necompletat).


    Vă atrag atenția asupra faptului că, dacă valabilitatea certificatului ar trebui să se extindă la subdomeniile resursei care se autentifică, atunci FQDN-ul din câmpul „Nume comun” va trebui completat cu masca „*”. ("*.example.net" - de exemplu).

    Curioșii pot vedea ce se ascunde în codul containerului CSR:

    $ openssl req -noout -text -in ./example.net.csr


    Trimitem fișierul CSR „example.net.csr” către autoritatea de certificare de la care achiziționăm certificatul.

    Achiziția unui certificat SSL/TLS (X.509).

    Nuanțele alegerii unui furnizor de certificate, procedurile de comandă și plată nu sunt luate în considerare aici, aceasta nu este o problemă tehnică. Unul dintre punctele importante este să nu ratați alegerea între un certificat destinat unui singur domeniu și un „wildcard” care acoperă toate subdomeniile de nivelul următor cu garanțiile sale.

    Generarea unui certificat X.509 autosemnat (opțional).

    Ca alternativă, pentru a fi utilizat exclusiv într-o rețea locală, puteți crea singur certificatul necesar, semnându-l cu cheia dvs. „privată” în loc de centru de încredere certificare - așa-numitul „autosemnat” (autosemnat):

    $ cd ./make-cert
    $ openssl x509 -req -days 1095 -in ./example.net.csr -signkey ./example.net.key -out ./example.net.crt


    Ca urmare a comenzii de mai sus, pe lângă componentele existente, vom primi fișierul „example.net.crt” al unui certificat auto-realizat, a cărui autenticitate nu poate fi verificată în infrastructura de internet a autorităților de certificare, deși este normal din punct de vedere funcțional și utilizabil.

    Verificarea corectitudinii certificatelor si cheilor.

    Certificatul SSL/TLS primit conține cel puțin următoarele informații:

    Versiunea certificatului;
    Numărul de serie al certificatului;
    Algoritm de semnătură;
    Numele complet (unic) al proprietarului certificatului;
    Cheia publică a proprietarului certificatului;
    Data emiterii certificatului;
    Data expirării certificatului;
    Numele complet (unic) al autorității de certificare;
    Semnătura digitală a editorului.


    Personal, verific întotdeauna că datele specificate în certificat sunt corecte prin decodarea și inspectarea conținutului acestora folosind următoarea comandă:

    $ cd ./make-cert
    $ openssl x509 -noout -text -in ./example.net.crt


    În practică, se întâmplă adesea ca clienții sau colegii incompetenți să furnizeze certificate și chei confuze care nu au legătură între ele pentru a fi utilizate direct în serviciile web. Încercarea de a le folosi pe un server web va genera o eroare precum „nepotrivirea valorii cheii x509”.

    Cea mai simplă modalitate de a verifica corectitudinea cheii „private”, CSR și certificatul final X.509 este verificarea sumei de control a cheii „publice” (blocul „modulus”) conținută în toate aceste containere:

    $ openssl rsa -noout -modulus -in ./example.net.key | openssl md5
    $ openssl req -noout -modulus -in ./example.net.csr | openssl md5
    $ openssl x509 -noout -modulus -in ./example.net.crt | openssl md5


    Șirul hash MD5 este scurt și nu este greu de făcut diferența dintre ele.

    Formăm un set tipic de fișiere de certificat și cheie.

    De obicei, autoritățile de certificare furnizează nu numai certificatul solicitat, ci și un set suplimentar de certificate intermediare (autoritatea însăși, nodul său părinte și așa mai departe până la nodul rădăcină).

    În general, în acest proces putem acumula mai multe fișiere, pe care le numesc în funcție de funcționalitatea lor, cam așa:

    „example.net.key” - container cu chei „private” și „publice” (protejat cu parolă);
    „example.net.key.decrypt” - container protejat fără parolă cu chei „private” și „publice”;
    „example.net.csr” - cererea CSR utilizată la comandarea certificatului;
    „example.net.crt” - direct certificatul nostru X.509;
    "intermediate.crt" - certificat (sau un lanț al acestuia) al autorității de certificare;
    "root.crt" - certificat centrul rădăcinii de la care începe lanţul de încredere.


    Certificatele intermediare ne-au fost furnizate nu numai pentru revizuire - este recomandabil să suplimentăm containerul cu certificatul nostru destinat utilizării în serviciul web, formând acolo un lanț până la un nod de încredere binecunoscut. Acest lucru se face prin simpla adăugare a codurilor text la sfârșitul fișierului:

    $ cd ./make-cert
    $ cat ./example.net.crt >> ./example.net-chain.crt
    $ cat ./intermediate.crt >> ./example.net-chain.crt
    $ cat ./root.crt >> ./example.net-chain.crt


    Vă atrag atenția asupra faptului că certificatul nostru trebuie să fie la începutul lanțului plasat în container - de obicei, serverul web verifică cheia „privată” atașată cu cheia „publică” în primul certificat care apare în proces de citire a conţinutului recipientului.

    În Linux, certificatele și cheile de criptare au deja locuri în sistemul de fișiere. Distribuim fișiere și le protejăm de accesul străinilor:

    # mkdir -p /etc/ssl/certs
    # mkdir -p /etc/ssl/private

    # cp ./example.net-chain.crt /etc/ssl/certs/
    # cp ./example.net.key.decrypt /etc/ssl/private/

    # chown -R root:root /etc/ssl
    # chmod -R o-rwx /etc/ssl


    Certificat SSL pe serverul web Nginx.

    În cel mai simplu caz, utilizarea unui certificat SSL în serverul web „Nginx” este implementată aproximativ după cum urmează:

    # vi /etc/nginx/sites-enabled/example.net.conf


    ....

    Server(
    asculta 443 ssl;
    nume_server example.net;
    ....


    ssl activat;
    ssl_dhparam /etc/nginx/ssl/dhparam.pem;
    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers AES256-SHA:RC4:HIGH:!aNULL:!MD5:!kEDH;
    ssl_prefer_server_ciphers activat;
    ssl_session_cache shared:SSL:30m;
    ssl_session_timeout 1h;


    ssl_certificate /etc/ssl/certs/example.net-chain.crt;
    ssl_certificate_key /etc/ssl/private/example.net.key.decrypt;
    ....
    }
    ....


    Certificat SSL pe serverul web Apache.

    În serverul web „Apache”, certificatul SSL este utilizat astfel:

    # vi /etc/apache2/sites-enabled/example.net.conf


    ....
    # Descrierea mediului de lucru al site-ului web accesibil prin HTTPS

    ServerName example.net
    ....


    # Setări de protocol generice recomandate
    Motorul SSL pornit
    SSLProtocol all -SSLv2
    SSLHonorCipherComanda activat
    SSLCipherSuite HIGH:MEDIUM:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!aECDH:+SHA1:+MD5:+HIGH:+MEDIUM
    SSLOptions +StrictRequire
    Compresia SSL dezactivată

    # Certificat și fișiere cheie
    SSLCertificateFile /etc/ssl/certs/example.net-chain.crt
    SSLCertificateKeyFile /etc/ssl/certs/example.net.key.decrypt

    ....