O modalitate foarte simpla de a crea o sesiune client server este folosirea utilitarului nc
(netcat).
Intr-o consola, porniti nc
, cu rol de server, sa asculte pe portul 12345
:
$ nc -l 12345
Apoi, dintr-o alta consola, folositi nc
cu rol de client, pentru a va conecta local pe portul 12345
:
$ nc localhost 12345
Observati ca textul introdus in client apare pe server, si invers.
Porniti wireshark
sau tcpdump
si observati conversatia TCP pe portul 12345
. Observati ca datele sunt transmise in clar, necriptate.
Opriti apoi cele doua procese nc
.
Pentru a crea o sesiune client/server, dar de data aceasta criptata, putem folosi utilitarul openssl
:
openssl s_server
va avea rol de serveropenssl s_client
va avea rol de client
Incercati sa porniti openssl s_server
pe portul 12345:
- $ sudo openssl s_server -accept 12345 Error opening server certificate private key file server.pem 140455789008536:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('server.pem','r') 140455789008536:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400: unable to load server certificate private key file
Observati ca openssl s_server
nu poate porni, deoarece are nevoie de un certificat de server si de o cheie privata.
Descarcati:
Apoi, porniti din nou openssl s_server
, specificand parametrii -cert
si -key
:
$ openssl s_server -cert server.ixlabs.crt -key server.ixlabs.key -accept 12345 Using default temp DH parameters ACCEPT
Observati ca serverul a pornit cu succes si asteapta conexiuni.
Dintr-o alta console, folositi openssl s_client
pentru a va conecta local pe portul 12345
:
$ openssl s_client -connect localhost:12345 CONNECTED(00000003) depth=0 C = RO, ST = Some-State, O = Ixia, OU = Development, CN = server verify error:num=20:unable to get local issuer certificate verify return:1 depth=0 C = RO, ST = Some-State, O = Ixia, OU = Development, CN = server verify error:num=21:unable to verify the first certificate verify return:1 [...]
Observati ca:
Pentru a putea valida certificatul serverului, avem nevoie de certificatul CA-ului care l-a semnat.
Descarcati certificatul CA-ului ca.crt
de aici
Apoi, lansati din nou openssl s_client
, dar cu parametru -CAfile
:
$ openssl s_client -CAfile ca.crt -connect localhost:12345 CONNECTED(00000003) depth=1 C = RO, O = Ixia, OU = Development, CN = Ixia-CA verify return:1 depth=0 C = RO, ST = Some-State, O = Ixia, OU = Development, CN = server verify return:1 --- Certificate chain 0 s:/C=RO/ST=Some-State/O=Ixia/OU=Development/CN=server i:/C=RO/O=Ixia/OU=Development/CN=Ixia-CA --- [...] Verify return code: 0 (ok)
Observati ca de data aceasta certificatul este validat.
Similar cu nc
, textul introdus in client apare pe server, si invers.
Porniti wireshark sau tcpdump si observati conversatia TCP pe portul 12345. Observati ca datele sunt criptate in cadrul unei sesiuni SSL.
Folositi certificatul server.ixlabs
pentru a realiza o configurare a unui virtual host pe serverul Apache local (instalați-l dacă nu este instalat) cu suport HTTPS.
Pașii pe care trebuie să îi urmați sunt:
server.ixlabs
server.ixlabs
cu suport HTTPS.a2ensite
.a2enmod ssl
/etc/ssl/certs/
și a cheii private în /etc/ssl/private/
.server.ixlabs
cu suport HTTPS. Vedeți liniile de configurare de aici./etc/hosts
pentru numele server
cu adresa locală (poate chiar adresa de loopback) ca să aveți rezolvat numele de domeniu.
server
si nu cu server.ixlabs
pentru ca browserul se asteapta ca domeniul din URL sa faca match cu CN-ul din certificat, iar acesta este server
.
https://server
pentru a valida configurarea corectă a serviciului.Pe sistemul local instalați pachetul Courier IMAP
sudo apt-get install courier-imap courier-imap-ssl
Configurați pentru IMAPS certificatul server.ixlabs
și apoi folosiți un client de e-mail pentru vă conecta la server prin IMAPS.
Folosiți și openssl s_client
pentru a verifica folosirea corespunzătoare a certificatului pe server.