Administrare server open source

Platforma de hosting cu software liber, gratuit, open source.

Cand vine vorba de transfer de date securizat de obicei folosim certificate SSL. Cel mai des le intalnim pe siteurile web (HTTPS) dar aceleasi certificate se pot folosi si pentru transmiterea securizata a mailurilor (SMTP, POP3, IMAP) sau transferul datelor (FTP).

Inainte de a explica cum se genereaza un certificat trebuie inteles ca exista doua tipuri de certificate: cele generate de un CA (trusted) si cele generate local (untrusted). Certificatele trusted de obicei se cumpara de la un furnizor sau distribuitor, deci nu ne vom ocupa de ele. Cele untrusted in schimb sunt folosite pentru testarea aplicatiilor care trebuie sa functioneze in mod securizat sau pentru uz propriu unde ne intereseaza doar transferul criptat al datelor nu si o confirmare a identitatii si sunt generate local de catre administratorul de sistem.

Pentru generarea unui certificat in Linux avem nevoie de pachetul OpenSSL care vine de obicei odata cu distributia folosita iar generarea se face in patru pasi:

1. Generam o cheie privata

Intr-un sistem de criptare asimetrica este nevoie de doua chei: una publica si una privata. Cheia privata e cea pe care urmeaza sa o generam acum. Dupa cum ii spune numele, e o cheie privata deci va trebui sa ramana pe server iar publicul (adica orice persoana neautorizata) nu trebuie sa aiba acces la ea.

Generarea se face folosind comanda openssl:

sergiu@lamp:~/openssl$ openssl genrsa -des3 -out server.key 2048
Generating RSA private key, 2048 bit long modulus
................................+++
............................................................................................................+++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:
sergiu@lamp:~/openssl$

Parametri de dupa openssl ii spun comenzii ca vrem sa generam o cheie privata (genrsa) folosind algoritmul des3 cu criptare pe 2048 de biti iar cheia sa fie salvata in fisierul server.key.

2. Generam un CSR

Acum ca avem cheia privata, urmatorul pas ar fi sa generam CSR-ul (Certificate Signing Request). Vom folosi in continuare comanda openssl care ne va cere cateva informatii referitoare la certificat:

sergiu@lamp:~/openssl$ openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:RO
State or Province Name (full name) [Some-State]:Cluj
Locality Name (eg, city) []:Cluj-Napoca
Organization Name (eg, company) [Internet Widgits Pty Ltd]:LAMP
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:lamp.ro
Email Address []:nospam@lamp.ro
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
sergiu@lamp:~/openssl$

Informatiile cerute la acest pas, mai putin parola, vor putea fi verificate odata ce folosim certificatul. Sunt informatii pe care le pot vedea toti cei care vor folosi certificatul.

3. Stergem parola din cheia privata

La primul pas a fost necesara setarea unei parole, parola de care nu avem nevoie in majoritatea cazurilor. Ca sa scoatem parola vom folosi din nou comanda openssl:

sergiu@lamp:~/openssl$ cp server.key server.key.original
sergiu@lamp:~/openssl$ openssl rsa -in server.key.original -out server.key
Enter pass phrase for server.key.original:
writing RSA key
sergiu@lamp:~/openssl$

4. Generam certificatul

Acum ca avem CSR-ul si am scos parola din cheia privata putem genera certificatul:

sergiu@lamp:~/openssl$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Signature ok
subject=/C=RO/ST=Cluj/L=Cluj-Napoca/O=LAMP/CN=lamp.ro/emailAddress=nospam@lamp.ro
Getting Private key
sergiu@lamp:~/openssl$

Daca totul a decurs normal vom avea patru fisiere: server.crt, server.csr, server.key si server.key.original. Pentru ca certificatul sa poata fi folosit avem nevoie doar de server.key (cheia privata) si server.crt (certificatul generat cu rol de cheie publica). Aceste doua fisiere vor fi necesare cand vrem sa instalam certificatul.

Linux

3 Responses so far.

  1. Nicu says:

    Interesant articol, ma batea si pe mine gandul sa incerc chestia asta.

  2. Catana Alexandru says:

    Dc nu faci si un articol cu generare si instalare SSL pentru cpanel ?

  3. Sergiu Tot says:

    As scrie mai multe articole, dar stau prost cu timpul liber. Oricum, am notat sugestia. Merci!