Creați propriul dvs. ca și să semneze certificatele lor pentru resursele lor

În această lucrare în detaliu descrie modul de a crea propriul CA și generarea ulterioară de fișiere corelate: certificate, cererile de certificat, și așa mai departe. Noi credem că munca într-un terminal de pe mașină Linux / Unix cu openssl.







Notă este o traducere liberă în limba română a articolului aici (plus lucrurile mele proprii). Acesta descrie de bază „low-level“ comenzi pentru lucrul cu certificate (x509, nec, etc.)

Mai multe despre certificatele digitale în alte posturi:

Centrul de certificare (autoritate de certificare engleza CA. abreviat) - este un punct unic de generare a certificatelor digitale. La clienții finali (de exemplu, browsere web) are o bază de date de chei publice diferite în CA, și verificați-le vin, de exemplu, certificatele site-ului. Suntem interesați de certificate care sunt folosite în sesiunile care sunt protejate prin protocolul SSL / TLS.

De fapt, întregul proces poate fi împărțit în următoarele etape:

  1. generează o cheie privată (colecție extrem de aleatoare de bytes);
  2. este generată pe baza unei perechi a certificatului cheii private pentru CA (publice și private);
  3. Generează o pereche de certificate pentru domeniul semnat creat în etapa anterioară CA.

Pentru a începe cu cheia privată pentru a genera un fișier (ca.key fișier), în procesul de introducere a parolei (amintiți-vă că, avem nevoie de ea mai mult, dacă doriți să creați o cheie fără o parolă, pur și simplu eliminați din argumentul echipei -des3):

Acum Genera o pereche de certificate pentru CA nostru (în loc de 365, puteți înlocui orice altă valoare, aceasta este durata de valabilitate a certificatelor de cuplu de zile):

Introduceți parola pentru a tasta și apoi completați cu atenție în câmpul subiect (subiect). Din aceste date, puteți identifica apoi certificatul public printre lista de alte, de exemplu. Ieșirea este fișier ca.crt - este un certificat public al CA. nostru

Puteți crea o cheie și certificat ca o echipă, iar în aceeași comandă poate include parametrii subiectului:

Din păcate, această comandă generează o cheie nevalidă. OpenSSL înțelege în mod corect, dar alte programe nu pot lua. Noi rezolva acest lucru cu comanda (care tocmai am citit și scrie la fișierul din nou):







Parametrul -subj Conținutul este la vedere / $ key = $ segmente de valoare. $ În cazul în care cheia poate lua următoarele valori:

Deci, avem un domeniu (de exemplu, example.com) și dorim să scrie SSL-certificat semnat de nou creat pentru el CA. Certificatul de pe browser-ul utilizat. Pașii sunt aproximativ aceleași ca și în cazul unei CA:

  1. a crea o cheie privată separată (au nevoie de o nouă cheie privată, el nu se poate folosi pe cel pe care am făcut-o pentru CA);
  2. Creăm cererea de semnare a certificatului, care apoi trebuie să trimită CA;
  3. de CA certificat este generată pe baza cererii de semnare a certificatului;
  4. instalați certificatul pe care serverul.

Deci, cheia este generată (în procesul de introducere a unei parole, de preferință diferită de parola utilizată pentru a genera cheia CA):

Dacă nu doriți să cripta cheia, apoi se omite setarea -des3:

Aici este o modalitate simplă de a crea un csr:

În acest proces, trebuie să răspundă la câteva întrebări (țară, un oraș, nume de domeniu, etc.), rezultatul este un csr-fișier pe care îl puteți trimite CA. Cu toate acestea, această metodă are mai multe dezavantaje semnificative - cerere de date se duce la un model predeterminat, care nu include unele domenii importante, de exemplu, subjectAltName (această extensie este de a include mai multe DNS-nume în certificatul).

Singura modalitate cunoscută pentru a indica pentru mine expansiunea subjectAltName - este de a utiliza propriul fișier de configurare pentru OpenSSL. Aici, de exemplu, după cum urmează:

Salvați-l în fișierul-OpenSSL csr.cnf și editarea (trebuie să vă înregistrați în subjectAltName domeniile dvs., dacă ești bun în configurarea de OpenSSL, este posibil și alte opțiuni pentru a schimba / adăuga), apoi executați următoarea comandă aici:

Server.csr Fișierul rezultat este acum necesar pentru a „trimite» CA, acolo să-l semneze. CA Din propria noastră, atunci vom semna ei înșiși. Aici, de asemenea, există o nuanță asociată cu X509v3-extensii - echipa a crea certificatul implicit nu include extinderea menționată la csr (care este specificat în subjectAltName valorile CSR în certificat nu se încadrează). Vom merge pentru modul cel mai simplu - vom folosi aceeași configurație (openssl-csr.cnf), pentru a genera csr, de la ea, avem nevoie doar secțiunea [req_ext]:

În acest caz, „termenul de valabilitate“ a certificatului este de un an (365 de zile).

Acum avem set aproape complet de toate certificatele necesare. Uneori, trebuie să utilizați o cheie de server necriptat aici este modul în care puteți obține în fișierul server.key.insecure dacă server.key este cheia criptată:

Pentru ușurința de utilizare poate fi un pic redenumi fișierele:

Pentru a începe cu comenzi utile care permit „vezi“ Certificate și csr:

Acum aveți nevoie pentru a pune certificatele generate (server.crt și server.key) la locația dorită pe server. Detalii specifice merg deja dincolo de note.

Browserul nu jura pe certificat trebuie să fie adăugate la depozitul său CA nou creată CA, și anume fișier ca.crt de import, uita-te la această listă, el a apărut. Puteți pune, de asemenea, certificatul într-un depozit la nivel de sistem CA-certificate.